code: public static ExtractFromRow extractName( final int indexInRow,
                                                final NodeCache cache,
                                                TypeSystem types ) {
          final TypeFactory<Name> type = types.getNameFactory();
          final boolean trace = NodeSequence.LOGGER.isTraceEnabled();
          return new ExtractFromRow() {
              @Override
              public TypeFactory<Name> getType() {
                  return type;
              }
  
              @Override
              public Object getValueInRow( RowAccessor row ) {
                  CachedNode node = row.getNode(indexInRow);
                  if (node == null) return null;
                  Name name = node.getName(cache);
                  if (trace) NodeSequence.LOGGER.trace("Extracting name from {0}: {1}", node.getPath(cache), name);
                  return name;
              }
  
              @Override
              public String toString() {
                  return "(extract-name)";
              }
          };
      }
docs: Create an extractor that extracts the name from the node at the given position in the row.
  
  @param indexInRow the index of the node in the rows; must be valid
  @param cache the cache containing the nodes; may not be null
  @param types the type system; may not be null
  @return the path extractor; never null