protected AST lookupProperty(AST dot, boolean root, boolean inSelect) throws SemanticException { DotNode dotNode = (DotNode) dot; FromReferenceNode lhs = dotNode.getLhs(); AST rhs = lhs.getNextSibling(); switch (rhs.getType()) { case SqlTokenTypes.ELEMENTS: case SqlTokenTypes.INDICES: if (log.isDebugEnabled()) { log.debug( "lookupProperty() " + dotNode.getPath() + " => " + rhs.getText() + "(" + lhs.getPath() + ")"); } CollectionFunction f = (CollectionFunction) rhs; // Re-arrange the tree so that the collection function is the root and the lhs is the path. f.setFirstChild(lhs); lhs.setNextSibling(null); dotNode.setFirstChild(f); resolve(lhs); // Don't forget to resolve the argument! f.resolve(inSelect); // Resolve the collection function now. return f; default: // Resolve everything up to this dot, but don't resolve the placeholders yet. dotNode.resolveFirstChild(); return dotNode; } }