docs: protected String normalize( String path ) {
  
          if (path == null) {
              return null;
          }
  
          // Create a place for the normalized path
          String normalized = path;
  
          if (normalized.equals("/.")) {
              return "/";
          }
  
          // Normalize the slashes and add leading slash if necessary
          if (normalized.indexOf('\\') >= 0) {
              normalized = normalized.replace('\\', '/');
          }
          if (!normalized.startsWith("/")) {
              normalized = "/" + normalized;
          }
  
          // Resolve occurrences of "//" in the normalized path
          while (true) {
              int index = normalized.indexOf("//");
              if (index < 0) {
                  break;
              }
              normalized = normalized.substring(0, index) + normalized.substring(index + 1);
          }
  
          // Resolve occurrences of "/./" in the normalized path
          while (true) {
              int index = normalized.indexOf("/./");
              if (index < 0) {
                  break;
              }
              normalized = normalized.substring(0, index) + normalized.substring(index + 2);
          }
  
          // Resolve occurrences of "/../" in the normalized path
          while (true) {
              int index = normalized.indexOf("/../");
              if (index < 0) {
                  break;
              }
              if (index == 0) {
                  return (null); // Trying to go outside our context
              }
              int index2 = normalized.lastIndexOf('/', index - 1);
              normalized = normalized.substring(0, index2) + normalized.substring(index + 3);
          }
  
          // Return the normalized path that we have completed
          return (normalized);
  
      }