TupleSchema { @Override public String toString() { return name + Stream.of(slots).map(Object::toString).collect(joining(",", "{", "}")); } private  TupleSchema(String name, TupleSlot[] slots, Map<String, Integer> slotLookup); static TupleSchema of(String name, TupleSlot...slots); String getName(); Tuple makeWith(Object...values); Tuple make(Object[] values); Tuple make(TupleKeyValue...keyValues); Tuple make(NamedValue...builders); Tuple make(Map<String, Object> values); Tuple deserialise(BiFunction<V, Type, Object> deserialiser, Map<String, V> values); @Override boolean equals(Object o); @Override int hashCode(); @Override String toString(); TupleKey<Optional<T>> getOptionalKey(String name, Class<T> valueType); TupleKey<List<T>> getListKey(String name, Class<T> elementType); TupleKey<Map<K, V>> getMapKey(String name, Class<K> keyType, Class<V> valueType); TupleKey<T> getKey(String name, Type type);  }
@Test public void toStringRepresentation() { assertThat(coordinateSchema.toString(), equalTo("coordinate{x: java.lang.Integer,y: java.lang.Integer}")); }