code: protected StringBuilder getPath(StringBuilder path, int startIndex, boolean addPoint) {
  		boolean simple = true;
  		if (key != null) {
  			if (addPoint && path.length() > 0) {
  				path.insert(0, '.');
  			}
  			if (key instanceof Integer) {
  				path.insert(0, ']');
  				if (startIndex == 0) {
  					path.insert(0, key);
  				} else {
  					path.insert(0, startIndex + (int) key);
  				}
  				path.insert(0, '[');
  				simple = false;
  			} else {
  				path.insert(0, key);
  			}
  		}
  		if (parent != null) {
  			parent.getPath(path, startIndex, simple);
  		}
  		return path;
  	}
docs: Recursive path-builder method.
  
  @param path
  path builder
  @param startIndex
  first index within array (startIndex = 0 -&gt; zero based
  array-indexing)
  @param addPoint
  a point is insertable into the path
  
  @return path of this node