code: public String getDimensionDescription(int dimension) {
          if (dimension < 0 || dimension > pathToIndex.size())
              throw new IllegalArgumentException(
                  "invalid dimension: " + dimension);
          // If the cache is out of date, rebuild the reverse mapping.
          if (pathToIndex.size() > indexToPathCache.length) {
              // Lock to ensure safe iteration
              synchronized(this) {
                  indexToPathCache = 
                      new String[pathToIndex.size()];
                  for (Map.Entry<PathSignature,Integer> e : 
                           pathToIndex.entrySet())
                      indexToPathCache[e.getValue()] = e.getKey().toString();
              }
          }
          return indexToPathCache[dimension];
      }
docs: Returns the path mapped to the provided dimension.  Each path is a
  tab-delineated sequence of word and relations, e.g. "cat SBJ eats"