anchor.diff:  
   /// Reads files generated by [SchemaWriter].
   class SchemaReader {
  -  final Map<int, DriftSchemaEntity> _entitiesById = {};
  +  static final Uri _elementUri = Uri.parse('drift:hidden');
  +
  +  final Map<int, DriftElement> _entitiesById = {};
     final Map<int, Map<String, dynamic>> _rawById = {};
   
     final Set<int> _currentlyProcessing = {};
  
positive.code:       for (final key in content['unique_keys']) {
          uniqueKeys.add({
            for (final columnName in key)
              columns.singleWhere((c) => c.name.name == columnName)
          });
        }
      }
  
      return DriftTable(
        sqlName: sqlName,
        overriddenName: pascalCase,
        columns: columns,
        dartTypeName: '${pascalCase}Data',
        primaryKey: explicitPk,
        uniqueKeys: uniqueKeys,
        overrideTableConstraints: tableConstraints,
        overrideDontWriteConstraints: content['was_declared_in_moor'] as bool?,
        overrideWithoutRowId: withoutRowId,
        declaration: const CustomTableDeclaration(),
      );
    }
  
    MoorView _readView(Map<String, dynamic> content) {
      return MoorView(
        declaration: null,
        name: content['name'] as String,
        dartTypeName: content['dart_data_name'] as String,
        entityInfoName: content['dart_info_name'] as String,
      )..columns = [
          for (final column in content['columns'])
            _readColumn(column as Map<String, dynamic>)
        ];
    }
  
    DriftColumn _readColumn(Map<String, dynamic> data) {
  
negative.code:     final nullable = data['nullable'] as bool;
      final customConstraints = data['customConstraints'] as String?;
      final defaultConstraints = data['defaultConstraints'] as String?;
      final dslFeatures = <DriftColumnConstraint?>[
        for (final feature in data['dsl_features'] as List<dynamic>)
          _columnFeature(feature),
        if (defaultConstraints != null)
          DefaultConstraintsFromSchemaFile(defaultConstraints),
      ].whereType<DriftColumnConstraint>().toList();
      final getterName = data['getter_name'] as String?;
  
      // Note: Not including client default code because that usually depends on
      // imports from the database.
      return DriftColumn(
        sqlType: columnType,
        nullable: nullable,
        nameInSql: name,
        nameInDart: getterName ?? ReCase(name).camelCase,
        declaration: _declaration,
        customConstraints: customConstraints,
        constraints: dslFeatures,
      );
    }
  
    DriftColumnConstraint? _columnFeature(dynamic data) {
      if (data == 'auto-increment') return PrimaryKeyColumn(true);
      if (data == 'primary-key') return PrimaryKeyColumn(false);
  
      if (data is Map<String, dynamic>) {
        final allowedLengths = data['allowed-lengths'] as Map<String, dynamic>;
  