public FunctionOverloadBuilder WithDynamicReturnType(FunctionOverload.ReturnTypeBuilderDelegate returnTypeBuilder)
        {
            this.ReturnType        = returnTypeBuilder(Enumerable.Empty <FunctionArgumentSyntax>());
            this.ReturnTypeBuilder = returnTypeBuilder;

            return(this);
        }
        public FunctionOverloadBuilder WithReturnType(TypeSymbol returnType)
        {
            this.returnType        = returnType;
            this.returnTypeBuilder = args => returnType;

            return(this);
        }
        public FunctionOverloadBuilder WithDynamicReturnType(FunctionOverload.ReturnTypeBuilderDelegate returnTypeBuilder, TypeSymbol signatureType)
        {
            this.ReturnType        = signatureType;
            this.ReturnTypeBuilder = returnTypeBuilder;

            return(this);
        }
 public FunctionOverloadBuilder(string name)
 {
     this.name                  = name;
     this.returnType            = LanguageConstants.Any;
     this.fixedParameterTypes   = ImmutableArray.CreateBuilder <TypeSymbol>();
     this.returnTypeBuilder     = args => LanguageConstants.Any;
     this.variableParameterType = null;
 }