public override DmdTypeBase FullResolve()
        {
            if (IsFullyResolved)
            {
                return(this);
            }
            var returnType = ((DmdTypeBase)methodSignature.ReturnType).FullResolve();

            if ((object)returnType == null)
            {
                return(null);
            }
            var parameterTypes = DmdTypeUtilities.FullResolve(methodSignature.GetParameterTypes());

            if (parameterTypes == null)
            {
                return(null);
            }
            var varArgsParameterTypes = DmdTypeUtilities.FullResolve(methodSignature.GetVarArgsParameterTypes());

            if (varArgsParameterTypes == null)
            {
                return(null);
            }
            return((DmdTypeBase)returnType.AppDomain.MakeFunctionPointerType(methodSignature.Flags, methodSignature.GenericParameterCount, returnType, parameterTypes, varArgsParameterTypes, GetCustomModifiers()));
        }
        public override DmdTypeBase FullResolve()
        {
            if (IsFullyResolved)
            {
                return(this);
            }
            var newTypeArguments = DmdTypeUtilities.FullResolve(typeArguments);

            if (newTypeArguments != null)
            {
                return((DmdTypeBase)AppDomain.MakeGenericType(genericTypeDefinition, newTypeArguments, GetCustomModifiers()));
            }
            return(null);
        }