code: private boolean isNormal() {
      if (getNameCount() == 0 || (getNameCount() == 1 && !isAbsolute())) {
        return true;
      }
  
      boolean foundNonParentName = isAbsolute(); // if there's a root, the path doesn't start with ..
      boolean normal = true;
      for (Name name : names) {
        if (name.equals(Name.PARENT)) {
          if (foundNonParentName) {
            normal = false;
            break;
          }
        } else {
          if (name.equals(Name.SELF)) {
            normal = false;
            break;
          }
  
          foundNonParentName = true;
        }
      }
      return normal;
    }
docs: Returns whether or not this path is in a normalized form. It's normal if it both contains no
  "." names and contains no ".." names in a location other than the start of the path.