class TupleKey { final List parts; TupleKey( String key1, [ String? key2, String? key3 ] ) : parts = [ key1, if (key2 != null) key2, if (key3 != null) key3, ]; const TupleKey.byParts(this.parts); TupleKey.fromString(String multiKeyString) : parts = multiKeyString.split('|').toList(); @override String toString() => parts.join('|'); @override bool operator ==(other) => parts.toString() == other.toString(); @override int get hashCode => Object.hashAll(parts); }