public FunctionSignature WithSubstitutedTypes(ISet <Substitution> typeMap)
 {
     return(new FunctionSignature(originalDefinitionSyntax: OriginalDefinition,
                                  typeArguments: typeMap.Select(substitution => substitution.typeArgument).ToImmutableArray(),
                                  parameters: ParametersTypes.Select(p => p.WithSubstitutedTypes(typeMap)).ToImmutableArray(),
                                  returnType: ReturnType.WithSubstitutedTypes(typeMap)));
 }
 public override string ToString()
 {
     return(string.Format("{0} .ctor({1})", DeclaringType, string.Join(", ", ParametersTypes.Select(t => t.Name))));
 }