public void resolve(boolean inSelect) throws SemanticException {
    // Get the function name node.
    AST name = getFirstChild();
    initializeMethodNode(name, inSelect);
    AST exprList = name.getNextSibling();
    // If the expression list has exactly one expression, and the type of the expression is a
    // collection
    // then this might be a collection function, such as index(c) or size(c).
    if (ASTUtil.hasExactlyOneChild(exprList)) {
      if ("type".equals(methodName)) {
        typeDiscriminator(exprList.getFirstChild());
        return;
      }
      if (isCollectionPropertyMethod()) {
        collectionProperty(exprList.getFirstChild(), name);
        return;
      }
    }

    dialectFunction(exprList);
  }