if (params.isEmpty())
if (params.isEmpty()) {
    public Object visitExprFunCall(ExprFunCall exp)    {        // Has SymbolTable given us a function declaration?        try        {            Function fn = symTab.lookupFn(exp.getName());            return fn.getReturnType();        } catch (UnrecognizedVariableException e) {            // ignore        }                // Otherwise, we can assume that the only function calls are        // calls to built-in functions in the absence of helper        // function support in the parser.  These by and large have a        // signature like        //        //   template<T> T foo(T);        //        // So, if there's any arguments, return the type of the first        // argument; otherwise, return float as a default.        List params = exp.getParams();        if (params.isEmpty())            return new TypePrimitive(TypePrimitive.TYPE_FLOAT);        return ((Expression)params.get(0)).accept(this);    }