public Optional<Object> objectEvaluate( WalkedPath walkedPath ) {
        // Grap the data we need from however far up the tree we are supposed to go
        PathStep pathStep = walkedPath.elementFromEnd( upLevel );

        if ( pathStep == null ) {
            return Optional.empty();
        }

        Object treeRef = pathStep.getTreeRef();

        // Now walk down from that level using the subPathReader
        if ( subPathReader == null ) {
            return Optional.of( treeRef );
        }
        else {
            return subPathReader.read( treeRef, walkedPath );
        }
    }
public Optional < Object > objectEvaluate ( WalkedPath walkedPath ) { PathStep pathStep = walkedPath . elementFromEnd ( upLevel ) ; if ( pathStep == null ) { return Optional . empty ( ) ; } Object treeRef = pathStep . getTreeRef ( ) ; if ( subPathReader == null ) { return Optional . of ( treeRef ) ; } else { return subPathReader . read ( treeRef , walkedPath ) ; } }
This method is used when the TransposePathElement is used on the LFH as data.

Aka, normal "evaluate" returns either a Number or a String.

@param walkedPath WalkedPath to evaluate against
@return The data specified by this TransposePathElement.