### Question:
PropertyPath implements Comparable<PropertyPath> { public final PropertyPath path(PropertyPath path) { PropertyPath result = this; for (SubPath subPath : path.asList()) { result = subPath.withParent(result); } return result; } PropertyPath(); static PropertyPath parse(String path); Property property(String name); final Index index(long index); final Key key(String index); final PropertyPath keyOrIndex(Object object); final PropertyPath node(NodeId nodeId); final AnyProperty anyProperty(); final AnyIndex anyIndex(); final AnyKey anyKey(); final Any any(); final SubPath propertyOrKey(String string); final PropertyPath path(PropertyPath path); List<SubPath> asList(); boolean isRoot(); boolean startsWith(PropertyPath other); PropertyPath toSchemaPath(); @Override int compareTo(PropertyPath other); abstract String toString(); abstract boolean equals(Object obj); abstract int hashCode(); abstract NodeId getNodeId(); static final Root ROOT; }### Answer:
@Test public void path() { PropertyPath path = parents_0.path(parents_1_name); assertThat(path.toString()).isEqualTo("parents[0].parents[1].name"); }