anchor.diff:  
       final classPrefix = data.classPrefix;
   
  -    if (_classPrefixes[annotatedElementSource]?.contains(classPrefix) ??
  +    if (globalData.classPrefixesForLibrary[annotatedElementSource]
  +            ?.contains(classPrefix) ??
           false) {
         throw InvalidGenerationSourceError(
           'Defined a collection with duplicate class prefix $classPrefix.'
  
positive.code:     QueryDocumentSnapshotTemplate(),
    ];
  
    /// Map of file path to class prefixes
    final _classPrefixes = Expando<List<String>>();
  
    @override
    Future<Data> parseElement(
      BuildStep buildStep,
      void 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 roots = collectionAnnotations.where((collection) {
        final pathSplit = collection.path.split('/');
  
negative.code:     LibraryElement libraryElement,
      DartObject object,
      Element annotatedElement,
      GlobalData globalData,
    ) {
      // TODO find a way to test validation
  
  