private IType CreateConcreteCallableType(Node sourceNode, AnonymousCallableType anonymousType) { var module = TypeSystemServices.GetCompilerGeneratedTypesModule(); var name = GenerateCallableTypeNameFrom(sourceNode, module); ClassDefinition cd = My <CallableTypeBuilder> .Instance.CreateEmptyCallableDefinition(name); cd.Annotate(AnonymousCallableTypeAnnotation); cd.Modifiers |= TypeMemberModifiers.Public; cd.LexicalInfo = sourceNode.LexicalInfo; cd.Members.Add(CreateInvokeMethod(anonymousType)); Method beginInvoke = CreateBeginInvokeMethod(anonymousType); cd.Members.Add(beginInvoke); cd.Members.Add(CreateEndInvokeMethod(anonymousType)); AddGenericTypes(cd); module.Members.Add(cd); return((IType)cd.Entity); }