code: AbstractBrowsableClasspathResource navigate(ResourcePathNode<Void> path, boolean create) {
  
      ClasspathFolder folder = this;
      List<ResourcePathNode<Void>> pathList = path.asList();
      for (ResourcePathNode<Void> node : pathList) {
        String nodeName = node.getName();
        if (node.isRoot()) {
          if (node.isAbsolute()) {
            if (node == ResourcePathNode.ROOT_ABSOLUTE) {
              folder = getRoot();
            } else {
              throw new IllegalArgumentException(nodeName);
            }
          }
        } else if (node.isParentDirectory()) {
          if (!folder.isRoot()) {
            folder = folder.getParent();
          }
        } else {
          AbstractBrowsableClasspathResource childResource = folder.getChildResource(nodeName);
          if (childResource == null) {
            if (!create) {
              return null;
            }
            if ((node == path) && (nodeName.indexOf('.') >= 0)) {
              childResource = new ClasspathFile(folder, nodeName);
            } else {
              childResource = new ClasspathFolder(folder, nodeName);
            }
          }
          if (childResource.isFolder()) {
            folder = (ClasspathFolder) childResource;
          } else if (node == path) {
            return childResource;
          } else {
            // actually illegal classpath
            return null;
          }
        }
      }
      return folder;
    }
docs: @see #navigate(String)
  
  @param path the {@link ResourcePathNode}.
  @param create - {@code true} if non existing ressources should be created as fake resources,
  {@code false} oterhwise.
  @return the {@link AbstractBrowsableClasspathResource}. May be {@code null} if the given {@code path}
  does not exist and {@code create} is {@code false}.