protected virtual unsafe void DefineGenericTypeParameter(TypeBuilder typeBuilder, GenericTypeParameterBuilder paramBuilder, BCSYM_GenericParam *pParam)
        {
            paramBuilder.SetGenericParameterAttributes(GetGenericParameterAttributes(pParam));
            List <Type> list = new List <Type>();

            for (BCSYM_GenericConstraint *constraintPtr = *((BCSYM_GenericConstraint **)(pParam + 0x54)); constraintPtr != null; constraintPtr = *((BCSYM_GenericConstraint **)(constraintPtr + 8)))
            {
                if (((byte)(*(((byte *)constraintPtr)) == 0x26)) != 0)
                {
                    BCSYM *pSymbol = BCSYM.DigThroughNamedType(*((BCSYM * modopt(IsConst) modopt(IsConst) *)(constraintPtr + 12)));
                    Type   item    = this.GetType(typeBuilder, pSymbol);
                    if (BCSYM.IsInterface(pSymbol))
                    {
                        list.Add(item);
                    }
                    else
                    {
                        paramBuilder.SetBaseTypeConstraint(item);
                    }
                }
            }
            if (list.Count > 0)
            {
                paramBuilder.SetInterfaceConstraints(list.ToArray());
            }
        }
 private unsafe bool Equals(BCSYM* pSymbol, Type type)
 {
     int num2;
     if (pSymbol == null)
     {
         RaiseException(GetLastHResultError(), 0, 0, null);
     }
     if (type == null)
     {
         RaiseException(GetLastHResultError(), 0, 0, null);
     }
     bool flag = false;
     byte num = *((byte*) pSymbol);
     int num3 = num * 3;
     if (((byte) (num3[&?s_rgBilkindInfo@BCSYM@@1QBUBilkindInfo@@B] & 4)) != 0)