public override FieldInfo[] __GetDeclaredFields() { int field = module.TypeDef.records[index].FieldList - 1; int end = module.TypeDef.records.Length > index + 1 ? module.TypeDef.records[index + 1].FieldList - 1 : module.Field.records.Length; FieldInfo[] fields = new FieldInfo[end - field]; if (module.FieldPtr.RowCount == 0) { for (int i = 0; field < end; i++, field++) { fields[i] = module.GetFieldAt(this, field); } } else { for (int i = 0; field < end; i++, field++) { fields[i] = module.GetFieldAt(this, module.FieldPtr.records[field] - 1); } } return(fields); }