private static IEnumerable<FunctionSymbol> Create3(
string name, string documentation, TypeSymbol[] types,
string parameterName1, string parameterDocumentation1,
string parameterName2, string parameterDocumentation2,
string parameterName3, string parameterDocumentation3,
TypeSymbol overrideReturnType = null,
TypeSymbol overrideParameterType2 = null,
TypeSymbol overrideParameterType3 = null,
ParameterDirection overrideParameterDirection2 = ParameterDirection.In,
ParameterDirection overrideParameterDirection3 = ParameterDirection.In)
{
return types.Select(type => new FunctionSymbol(
name, documentation, null, overrideReturnType ?? type,
f => new[]
{
new ParameterSymbol(parameterName1, parameterDocumentation1, f, type),
new ParameterSymbol(parameterName2, parameterDocumentation2, f, overrideParameterType2 ?? type, overrideParameterDirection2),
new ParameterSymbol(parameterName3, parameterDocumentation3, f, overrideParameterType3 ?? type, overrideParameterDirection3)
}));
}