docs: public static ExtractFromRow extractParentNodeKey( final int indexInRow,
                                                         final NodeCache cache,
                                                         TypeSystem types ) {
          final TypeFactory<String> type = types.getStringFactory();
          final boolean trace = NodeSequence.LOGGER.isTraceEnabled();
          return new ExtractFromRow() {
              @Override
              public TypeFactory<String> getType() {
                  return type;
              }
  
              @Override
              public Object getValueInRow( RowAccessor row ) {
                  CachedNode node = row.getNode(indexInRow);
                  if (node == null) return null;
                  NodeKey parentKey = node.getParentKey(cache);
                  if (trace) NodeSequence.LOGGER.trace("Extracting parent key from {0}: {1}", node.getPath(cache), parentKey);
                  return parentKey != null ? parentKey.toString() : null;
              }
  
              @Override
              public String toString() {
                  return "(extract-parent-key)";
              }
          };
      }