public FileSystemNode find(final Path path) { final int pathSegmentCount = path.segmentCount(); if (pathSegmentCount == 0) { return this; } else { final String firstSegment = path.segment(0); for (FileSystemNode child : getChildren()) { if (child.getFile().getName().equals(firstSegment)) { return child.find(path.removeFirstSegments(1)); } } return null; } }