public ConstructorMetadata(ConstructorParameterMetadata[] parameters)
            : base(".ctor")
        {
            _parameters = parameters;

            _parameterTypes = GetParameterTypes(_parameters);
        }
        public ConstructorMetadata(
            ConstructorInfo constructorInfo,
            ConstructorParameterMetadata[] parameters)
            : base(constructorInfo)
        {
            _constructorInfo = constructorInfo;
            _parameters = parameters;

            _parameterTypes = GetParameterTypes(_parameters);
        }
        private static Type[] GetParameterTypes(ConstructorParameterMetadata[] parameters)
        {
            var parameterTypes = new Type[parameters.Length];

            for (var i = 0; i < parameters.Length; i++)
            {
                parameterTypes[i] = parameters[i].ParameterType;
            }

            return parameterTypes;
        }
        private static void InitializeField(
            ILGenerator il,
            FieldMetadata instanceField, 
            ConstructorParameterMetadata dispatcherParameter,
            FieldMetadataFieldBuilderMap fieldBuilders)
        {
            var fieldBuilder = fieldBuilders[instanceField];

            new StoreFieldStatement(fieldBuilder,
                new LoadArgumentExpression(dispatcherParameter.Sequence)
            ).Emit(il);
        }