anchor.diff:    
     // Mapping from a library identifier to the main `SourceElement`. If the library uses part/part of. 
     // the part header source is the SourceElement.  
  -  Map<String, SourceElement> librarySources = <String, SourceElement>{};
  +  Map<Name, SourceElement> librarySources = <Name, SourceElement>{};
     
     bool containsSource(Source source) => sources.containsKey(source);
     SourceElement addSource(Source source, SourceElement element) => sources[source] = element;
     SourceElement getSource(Source source) => sources[source];
     
  -  bool containsLibrarySource(String lib) => librarySources.containsKey(lib);
  -  SourceElement addLibrarySource(String lib, SourceElement element) => librarySources[lib] = element;
  -  SourceElement getLibrarySource(String lib) => librarySources[lib];
  +  bool containsLibrarySource(Name lib) => librarySources.containsKey(lib);
  +  SourceElement addLibrarySource(Name lib, SourceElement element) => librarySources[lib] = element;
  +  SourceElement getLibrarySource(Name lib) => librarySources[lib];
     
     ElementAnalysis operator -(ElementAnalysis a) => this;
     ElementAnalysis operator -() => this;
  
positive.code: /**
   * Instances of a class `ClassMember` is a our abstract representation of class members
   **/
  class ClassMember {
    ClassElement classDecl;
    ClassMember (ClassElement this.classDecl);
    
    Source get library_source => classDecl.library_source;
  }
  
  
  /**
   * Instances of a class`FieldElement` is a our abstract representation of fields
   **/
  class FieldElement extends ClassMember with Element {
    
    List<Identifier> references = <Identifier>[];
    bool doesReference(Identifier ident) => references.contains(ident);
    
    FieldDeclaration ast;
    VariableDeclaration varDecl;
    bool get isStatic => ast.isStatic;
    bool get isSynthetic => ast.isSynthetic;
    bool get isConst => varDecl.isConst;
    bool get isFinal => varDecl.isFinal;
    
    String get name => varDecl.name.toString();
    
    dynamic accept(ElementVisitor visitor) => visitor.visitFieldElement(this);
  
    FieldElement(FieldDeclaration this.ast,VariableDeclaration this.varDecl, ClassElement classDecl): super(classDecl);
    
    String toString() {
      return "Field [${isConst ? ' const ' : ''}"+
  
negative.code: /** 
   * Instance of a `VariableElement` is our abstract representation of a variable.
   **/
  class VariableElement extends NamedElement {
    Block enclosingBlock = null;
    VariableDeclaration ast;
    
    bool get isSynthetic => ast.isSynthetic;
    bool get isConst => ast.isConst;
    bool get isFinal => ast.isFinal;
    
    Name name;
    
    SourceElement sourceElement;
  
    dynamic accept(ElementVisitor visitor) => visitor.visitVariableElement(this);
  
    VariableElement(VariableDeclaration this.ast, Block this.enclosingBlock, SourceElement this.sourceElement) {
      name = new Name.FromIdentifier(this.ast.name);
    }
    
    String toString() {
      return "Var [${isConst ? ' const ' : ''}"+
  