anchor.diff:    
     R visitSourceElement(SourceElement node);
     
  +  R visitBlock(Block node);
     R visitClassElement(ClassElement node);
     R visitFunctionElement(FunctionElement node);
     R visitVariableElement(VariableElement node);
     
  +  R visitClassMember(ClassMember node);
     R visitFieldElement(FieldElement node);
     R visitMethodElement(MethodElement node);
   }
  
positive.code:       element = new SourceElement(source, unit);
        analysis.addSource(source, element);
        
        //PrintVisitor printer = new PrintVisitor();
        //printer.visitCompilationUnit(unit);
        
        Block oldBlock = _currentBlock; 
        _currentBlock = element;
        
        this.visitCompilationUnit(unit);
        
  
negative.code:   dynamic accept(ElementVisitor visitor) => visitor.visitMethodElement(this);
  
    MethodElement(MethodDeclaration this.ast, ClassElement classDecl): super(classDecl);
    
    String toString() {
      return "Method [${isAbstract ? ' abstract ' : ''}"+
              "${isGetter ? ' getter ' : ''}"+
              "${isSetter ? ' setter ' : ''}"+
              "${isOperator ? ' oper ' : ''}"+
              "${isStatic ? ' static ' : ''}"+
              "${isSynthetic ? ' synthetic ' : ''}, ${ast.metadata}] ${ast.returnType} ${ast.name}(${ast.parameters})";
    }
  }
  
  
  