code: private Object[] compile(String path) {
          List<String> lst;
  
          lst = Filesystem.SEPARATOR.split(path);
          if (lst.size() == 0) {
              throw new IllegalArgumentException("empty path: " + path);
          }
          if (lst.get(0).equals("")) {
              throw new IllegalArgumentException("absolute path not allowed: " + path);
          }
          if (lst.get(lst.size() - 1).equals("")) {
              throw new IllegalArgumentException(
                  "path must not end with separator: " + path);
          }
          return compileTail(lst, 0);
      }
docs: -- select helper methods