@Override
    public Object dupTree(Object t, Object parent) {
      // Overridden to copy start index / end index, that is needed through optimization,
      // e.g., for masking/filtering
      ASTNode astNode = (ASTNode) t;
      ASTNode astNodeCopy = (ASTNode) super.dupTree(t, parent);
      astNodeCopy.setTokenStartIndex(astNode.getTokenStartIndex());
      astNodeCopy.setTokenStopIndex(astNode.getTokenStopIndex());
      return astNodeCopy;
    }
Creates an ASTNode for the given token. The ASTNode is a wrapper around
antlr's CommonTree class that implements the Node interface.

@param payload
         The token.
@return Object (which is actually an ASTNode) for the token.
parser/src/java/org/apache/hadoop/hive/ql/parse/ParseDriver.java