### Question:
PathImpl implements Path { @Override public Iterable<Node> reverseNodes() { return nodeIterator( endNode(), reverseRelationships() ); } private  PathImpl( Builder left, Builder right ); static Path singular( Node start ); @Override Node startNode(); @Override Node endNode(); @Override Relationship lastRelationship(); @Override Iterable<Node> nodes(); @Override Iterable<Node> reverseNodes(); @Override Iterable<Relationship> relationships(); @Override Iterable<Relationship> reverseRelationships(); @Override Iterator<PropertyContainer> iterator(); @Override int length(); @Override int hashCode(); @Override boolean equals( Object obj ); @Override String toString();  }### Answer:
@Test void testPathReverseNodes() { when( spi.newNodeProxy( Mockito.anyLong() ) ).thenAnswer( new NodeProxyAnswer() ); Path path = new PathImpl.Builder( createNodeProxy( 1 ) ) .push( createRelationshipProxy( 1, 2 ) ) .push( createRelationshipProxy( 2, 3 ) ) .build( new PathImpl.Builder( createNodeProxy( 3 ) ) ); Iterable<Node> nodes = path.reverseNodes(); List<Node> nodeList = Iterables.asList( nodes ); assertEquals( 3, nodeList.size() ); assertEquals( 3, nodeList.get( 0 ).getId() ); assertEquals( 2, nodeList.get( 1 ).getId() ); assertEquals( 1, nodeList.get( 2 ).getId() ); }