public ConstructorEmitter CreateConstructor(
     ArgumentReference[] baseCtorArguments,
     AbstractTypeEmitter invocation
     )
 {
     return(invocation.CreateConstructor(baseCtorArguments));
 }
		public ConstructorEmitter CreateConstructor(ArgumentReference[] baseCtorArguments, AbstractTypeEmitter invocation)
		{
			var arguments = GetArguments(baseCtorArguments);
			var constructor = invocation.CreateConstructor(arguments);

			var delegateField = invocation.CreateField("delegate", delegateType);
			constructor.CodeBuilder.AddStatement(new AssignStatement(delegateField, new ReferenceExpression(arguments[0])));
			return constructor;
		}
        public ConstructorEmitter CreateConstructor(ArgumentReference[] baseCtorArguments, AbstractTypeEmitter invocation)
        {
            var arguments   = GetArguments(baseCtorArguments);
            var constructor = invocation.CreateConstructor(arguments);

            var delegateField = invocation.CreateField("delegate", delegateType);

            constructor.CodeBuilder.AddStatement(new AssignStatement(delegateField, new ReferenceExpression(arguments[0])));
            return(constructor);
        }
		public ConstructorEmitter CreateConstructor(ArgumentReference[] baseCtorArguments, AbstractTypeEmitter invocation)
		{
			return invocation.CreateConstructor(baseCtorArguments);
		}