public static ResolvedType GetFunctionType(FunctionDefinition func) { TypeContext ctx = func.ResolvedReturnType.TypeContext; if (!ctx.FuncTypesByRef.ContainsKey(func)) { ResolvedType type = GetFunctionType(func.ResolvedReturnType, func.ResolvedArgTypes, FunctionCall.CountOptionalArgs(func.DefaultValues)); ctx.FuncTypesByRef[func] = type; } return(ctx.FuncTypesByRef[func]); }