private PermissionSet CreatePermissionSet(DbDataReader reader) { var isSystem = reader.GetInt32(0) != 0; var allowBits = 0u; var denyBits = 0u; for (var i = 0; i < PermissionType.NumberOfPermissionTypes; i++) { var value = (PermissionValue)reader.GetByte(i + 9); var shift = i; if (!isSystem) { shift += PermissionType.NumberOfSystemPermissionTypes; } if (value == PermissionValue.Allow) { allowBits |= 1u << shift; } else if (value == PermissionValue.Deny) { denyBits |= 1u << shift; } } var allowBits1 = PermissionType.ConvertBitsIdToIndex(allowBits); var denyBits1 = PermissionType.ConvertBitsIdToIndex(denyBits); return(new PermissionSet(reader.GetInt32(7), reader.GetByte(8) != 0, allowBits1, denyBits1)); }