protected virtual unsafe PropertyBuilder DefineProperty(TypeBuilder typeBuilder, BCSYM_Property *pProperty)
        {
            string             name       = new string(*((char **)(pProperty + 12)));
            BCSYM *            pSymbol    = BCSYM.DigThroughNamedType(*((BCSYM * modopt(IsConst) modopt(IsConst) *)(pProperty + 80)));
            Type               returnType = this.GetType(typeBuilder, pSymbol);
            PropertyAttributes attributes = (PropertyAttributes)((*(((byte *)(pProperty + 0x4a))) & 2) << 8);

            Type[]          parameterTypes = this.GetParameterTypes(typeBuilder, (BCSYM_Proc *)pProperty);
            PropertyBuilder builder        = typeBuilder.DefineProperty(name, attributes, returnType, parameterTypes);
            int             num2           = *((int *)(pProperty + 0x80));

            if (num2 != 0)
            {
                BCSYM_Proc *  pProc     = (BCSYM_Proc *)num2;
                MethodBuilder mdBuilder = this.DefineMethod(typeBuilder, pProc);
                builder.SetGetMethod(mdBuilder);
            }
            int num = *((int *)(pProperty + 0x84));

            if (num != 0)
            {
                BCSYM_Proc *  procPtr  = (BCSYM_Proc *)num;
                MethodBuilder builder2 = this.DefineMethod(typeBuilder, procPtr);
                builder.SetSetMethod(builder2);
            }
            return(builder);
        }
        protected virtual unsafe MethodBuilder DefineMethod(TypeBuilder typeBuilder, BCSYM_Proc *pProc)
        {
            string           name             = new string(*((char **)(pProc + 12)));
            BCSYM *          pSymbol          = BCSYM.DigThroughNamedType(*((BCSYM * modopt(IsConst) modopt(IsConst) *)(pProc + 80)));
            Type             returnType       = this.GetType(typeBuilder, pSymbol);
            MethodAttributes methodAttributes = GetMethodAttributes(pProc);

            Type[] parameterTypes = this.GetParameterTypes(typeBuilder, pProc);
            return(typeBuilder.DefineMethod(name, methodAttributes, returnType, parameterTypes));
        }
        protected virtual unsafe ConstructorBuilder DefineConstructor(TypeBuilder typeBuilder, BCSYM_Proc *pProc)
        {
            MethodAttributes methodAttributes = GetMethodAttributes(pProc);

            Type[] parameterTypes = this.GetParameterTypes(typeBuilder, pProc);
            return(typeBuilder.DefineConstructor(methodAttributes, CallingConventions.Standard, parameterTypes));
        }