public MethodBodyOnMethodBase(MethodBase method, bool resolveTokens)
            : base(GetMethodSignature(method), resolveTokens)
        {
            module = method.Module;
            var methodBody = method.GetMethodBody();

            MaxStack   = methodBody.MaxStackSize;
            InitLocals = methodBody.InitLocals;

            var localSignature = methodBody.LocalSignatureMetadataToken != 0
                                     ? method.Module.ResolveSignature(methodBody.LocalSignatureMetadataToken)
                                     : SignatureHelper.GetLocalVarSigHelper().GetSignature(); // null is invalid value

            SetLocalSignature(localSignature);

            ILCodeReader.Read(methodBody.GetILAsByteArray(), ResolveToken, resolveTokens, this);

            ReadExceptions(methodBody.ExceptionHandlingClauses);
        }
        public MethodBodyOnDynamicILInfo(DynamicMethod dynamicMethod, GrEmit.Utils.DynamicILInfo dynamicILInfo, bool resolveTokens)
            : base(GetMethodSignature(dynamicILInfo), resolveTokens)
        {
            scope = new DynamicILInfoWrapper(dynamicILInfo).m_scope;
            using (var dynamicResolver = new DynamicResolver(dynamicMethod, dynamicILInfo))
            {
                int stackSize;
                int initLocals;
                int EHCount;

                var code = dynamicResolver.GetCodeInfo(out stackSize, out initLocals, out EHCount);

                MaxStack   = stackSize;
                InitLocals = initLocals != 0;

                SetLocalSignature(dynamicResolver.m_localSignature);

                ILCodeReader.Read(code, ResolveToken, resolveTokens, this);

                ExceptionsInfoReader.Read(dynamicResolver.GetRawEHInfo(), ResolveToken, resolveTokens, this);
            }
        }
        public MethodBodyOnDynamicILGenerator(DynamicMethod dynamicMethod, ILGenerator ilGenerator, bool resolveTokens)
            : base(GetMethodSignature(ilGenerator), resolveTokens)
        {
            scope = new DynamicILGenerator(ilGenerator).m_scope;
            using (var dynamicResolver = new DynamicResolver(dynamicMethod, ilGenerator))
            {
                int stackSize;
                int initLocals;
                int EHCount;

                var code = dynamicResolver.GetCodeInfo(out stackSize, out initLocals, out EHCount);

                MaxStack   = stackSize;
                InitLocals = initLocals != 0;

                SetLocalSignature(dynamicResolver.m_localSignature);

                ILCodeReader.Read(code, ResolveToken, resolveTokens, this);

                ReadExceptions(dynamicResolver, EHCount);
            }
        }