code: public static Term create(String term) {
          Term res = createStringCache.get(term);
  
          if (res == null) {
              if (term != null && term.length() >= 2 &&
                  term.charAt(0) == '{' && term.charAt(term.length() - 1) == '}') {
                  term = EscapeUtils.escape(term.substring(1, term.length() - 1));
              }
  
              long[] value = checkStringIndex(term);
              if (value[1] < 0L) {
                  res = (Term) StringProperty.getInstance(term);
              } else {
                  res = (Term) create(value[0]);
              }
              createStringCache.put(term, res);
          }
  
          // no clone/copy needed for cached result
          return res;
  	}
docs: Constructor of a path from a String. If the path does not have the
  correct syntax, an IllegalArgumentException will be thrown.