anchor.diff:      QueryDocumentSnapshotTemplate(),
     ];
   
  -  /// Map of file path to class prefixes
  -  final _classPrefixes = Expando<List<String>>();
  -
     @override
     Future<Data> parseElement(
       BuildStep buildStep,
  -    void globalData,
  +    GlobalData globalData,
       Element element,
     ) async {
       final library = await buildStep.inputLibrary;
  -    final collectionAnnotations = const TypeChecker.fromRuntime(Collection)
  -        .annotationsOf(element)
  -        .map(
  -          (annotation) =>
  -              _parseCollectionAnnotation(library, annotation, element),
  -        )
  -        .toList();
  +    final collectionAnnotations =
  +        const TypeChecker.fromRuntime(Collection).annotationsOf(element).map(
  +      (annotation) {
  +        return _parseCollectionAnnotation(
  +          library,
  +          annotation,
  +          element,
  +          globalData,
  +        );
  +      },
  +    ).toList();
   
       final roots = collectionAnnotations.where((collection) {
         final pathSplit = collection.path.split('/');
  
positive.code:       );
      }
  
      _classPrefixes[annotatedElementSource] ??= [];
      _classPrefixes[annotatedElementSource]!.add(classPrefix);
  
      return data;
    }
  
negative.code: 
      final classPrefix = data.classPrefix;
  
      if (globalData.classPrefixesForLibrary[annotatedElementSource]
              ?.contains(classPrefix) ??
          false) {
        throw InvalidGenerationSourceError(
          'Defined a collection with duplicate class prefix $classPrefix.'
  