anchor.diff:  import 'package:analyzer/src/generated/ast.dart';
   import 'engine.dart';
   
  +
   import 'printer.dart';
   
  +/**
  + * Instances of the class `ElementAnalysis` is the collection of all the `SourceElement`s 
  + * used in the entry file.
  + **/
   class ElementAnalysis {
  +  // Mapping from a source to the SourceElement.
     Map<Source, SourceElement> sources = <Source, SourceElement>{};
  +  
  +  // Mapping from a library identifier to the main `SourceElement`. If the library uses part/part of. 
  +  // the part header source is the SourceElement.  
     Map<LibraryIdentifier, SourceElement> libraries = <LibraryIdentifier, SourceElement>{};
     
     bool containsSource(Source source) => sources.containsKey(source);
  
positive.code:   FieldElement(FieldDeclaration this.ast,VariableDeclaration this.varDecl, ClassElement classDecl): super(classDecl); 
  }
  
  
  class MethodElement extends ClassMember with Block implements Element {
    MethodDeclaration ast;
    
  
negative.code:   bool doesReference(SimpleIdentifier ident) => references.contains(ident);
  }
  
  /**
   * Instances of a class `ClassMember` is a our abstract representation of class members
   **/
  class ClassMember {
    ClassElement classDecl;
    ClassMember (ClassElement this.classDecl);
  }
  
  
  /**
   * Instances of a class`FieldElement` is a our abstract representation of fields
   **/
  class FieldElement extends ClassMember {
    
    List<Identifier> references = <Identifier>[];
  