code: public static List<String> toPathParts(String encodedPath) {
      if (encodedPath == null || encodedPath.length() == 0) {
        return null;
      }
      List<String> result = new ArrayList<String>();
      int cur = 0;
      boolean notDone = true;
      while (notDone) {
        int slash = encodedPath.indexOf('/', cur);
        notDone = slash != -1;
        String sub;
        if (notDone) {
          sub = encodedPath.substring(cur, slash);
        } else {
          sub = encodedPath.substring(cur);
        }
        result.add(CharEscapers.decodeUri(sub));
        cur = slash + 1;
      }
      return result;
    }
docs: Returns the decoded path parts for the given encoded path.
  
  @param encodedPath slash-prefixed encoded path, for example {@code
  "/m8/feeds/contacts/default/full"}
  @return decoded path parts, with each part assumed to be preceded by a {@code '/'}, for example
  {@code "", "m8", "feeds", "contacts", "default", "full"}, or {@code null} for {@code null}
  or {@code ""} input