internal StructTypeAliasDelegate(ModuleContext declaredModule, string name, string description, List <StructField> fields) { this.declaredModule = declaredModule; Name = name; Description = description; this.fields = fields; structContext = declaredModule.DefineSubContext(name, typeof(object)); ConstructorBuilder constructorBuilder = structContext.typeBuilder.DefineConstructor( MethodAttributes.Public, CallingConventions.Standard, Type.EmptyTypes); IILEmitter constructorEmitter = new GeneratorILEmitter(constructorBuilder.GetILGenerator()); constructorEmitter.EmitReturn(typeof(void)); realizedType = new RecordStructType(declaredModule.moduleName, name, description, structContext.typeBuilder, Enumerable.Empty <RecordStructField>(), new OperatorCollection(), new OperatorCollection(), new Dictionary <string, IMethodInvokeFactory>(), new Dictionary <string, IFieldAccessFactory>(), constructorBuilder); }