code: @Override
    public PathImpl schemeWalk(String userPath,
                           Map<String,Object> attributes,
                           String filePath,
                           int offset)
    {
      int length = filePath.length();
  
      if (length <= offset || filePath.charAt(offset) != '(')
        return super.schemeWalk(userPath, attributes, filePath, offset);
  
      MergePath mergePath = createMergePath();
      mergePath.setUserPath(userPath);
  
      int head = ++offset;
      int tail = head;
      while (tail < length) {
        int ch = filePath.charAt(tail);
  
        if (ch == ')') {
          if (head + 1 != tail) {
            String subPath = filePath.substring(head, tail);
  
            if (subPath.startsWith("(") && subPath.endsWith(")"))
              subPath = subPath.substring(1, subPath.length() - 1);
  
            mergePath.addMergePath(VfsOld.lookup(subPath));
          }
  
          if (tail + 1 == length)
            return mergePath;
          else
            return mergePath.fsWalk(userPath, attributes, filePath.substring(tail + 1));
        }
        else if (ch == ';') {
          String subPath = filePath.substring(head, tail);
  
          if (subPath.startsWith("(") && subPath.endsWith(")"))
            subPath = subPath.substring(1, subPath.length() - 1);
  
          mergePath.addMergePath(VfsOld.lookup(subPath));
  
          head = ++tail;
        }
        else if (ch == '(') {
          int depth = 1;
  
          for (tail++; tail < length; tail++) {
            if (filePath.charAt(tail) == '(')
              depth++;
            else if (filePath.charAt(tail) == ')') {
              tail++;
              depth--;
              if (depth == 0)
                break;
            }
          }
  
          if (depth != 0)
            return new NotFoundPath(getSchemeMap(), filePath);
        }
        else
          tail++;
      }
  
      return new NotFoundPath(getSchemeMap(), filePath);
    }
docs: schemeWalk is called by Path for a scheme lookup like file:/tmp/foo
  
  @param userPath the user's lookup() path
  @param attributes the user's attributes
  @param filePath the actual lookup() path
  @param offset offset into filePath