anchor.diff:  /**
    * Instances of a class`MethodElement` is a our abstract representation of methods
    **/
  -class MethodElement extends NamedElement with Block, ClassMember implements CallableElement {
  +class MethodElement extends Block with ClassMember implements CallableElement, NamedElement {
     MethodDeclaration ast;
     ClassElement classDecl;
     
     Name _name;
     Name get setterName => Name.SetterName(_name);
     Name get getterName => _name;
  +
     Name get name => isSetter ? setterName : getterName;
     Identifier get identifier => this.ast.name;
     bool get isAbstract => ast.isAbstract;
  
positive.code: /** 
   * Instance of a `ClassElement` is our abstract representation of the class.
   **/
  class ClassElement extends NamedElement with Block {
    Map<Name, FieldElement> declaredFields = <Name, FieldElement>{};
    Map<Name, MethodElement> declaredMethods = <Name, MethodElement>{};
    Map<Name, ConstructorElement> declaredConstructors = <Name, ConstructorElement>{};
  
negative.code: /**
   * Instances of a class `ConstructorElement` is a our abstract representation of constructors
   **/
  class ConstructorElement extends Block with ClassMember implements NamedElement, CallableElement{
    ConstructorDeclaration ast;
    ClassElement classDecl;
    
    Name name; 
    bool get isPrivate => name.isPrivate;
    
    Name get getterName => name;
    Name get setterName => Name.SetterName(name);
    Identifier get identifier => (this.ast.name != null ? this.ast.name : this.ast.returnType);
    bool get isSynthetic => ast.isSynthetic;
    bool get isFactory => ast.factoryKeyword != null;
  