anchor.diff:  
   import 'types.dart';
   import 'element.dart' as analysis;
  -
  -class PrintReferenceVisitor extends ToSourceVisitor {
  +import 'engine.dart';
  +
  +class PrintResolvedIdentifiers extends CodeFormatterImpl {
  +
  +  analysis.SourceElement currentSourceElement;
     analysis.ElementAnalysis elementAnalysis;
  -  PrintWriter writer;
  -  
  -  factory PrintReferenceVisitor.Print(analysis.ElementAnalysis elementAnalysis) => 
  -      new PrintReferenceVisitor(elementAnalysis, new PrintStringWriter()); 
  -  
  -  PrintReferenceVisitor(analysis.ElementAnalysis this.elementAnalysis, PrintWriter writer) : super(writer) {
  +  Engine engine;
  +  
  +  PrintResolvedIdentifiers(Engine this.engine, analysis.ElementAnalysis this.elementAnalysis) : super(const FormatterOptions()) {
  +      elementAnalysis.sources.keys.forEach((Source src) {
  +          if (src == engine.entrySource) {
  +              
  +              var startToken = tokenize(src.contents.data); //Sets lineInfo
  +              var formatter = new PrintReferenceVisitor(engine, elementAnalysis, const FormatterOptions(), lineInfo, src.contents.data, null);
  +              elementAnalysis.getSource(src).ast.accept(formatter);
  +              print(formatter.writer.toString());
  +           }
  +      });      
  +  }
  +
  +  FormattedSource format(CodeKind kind, String source, {int offset, int end,
  +      int indentationLevel: 0, Selection selection: null}) {
  +
  +    var startToken = tokenize(source);
  +    checkForErrors();
  +
  +    var node = parse(kind, startToken);
  +    checkForErrors();
  +
  +    var formatter = new PrintReferenceVisitor(engine, elementAnalysis, const FormatterOptions(), lineInfo, source, selection);
  +    node.accept(formatter);
  +
  +    var formattedSource = formatter.writer.toString();
  +
  +    return new FormattedSource(formattedSource, formatter.selection);
  +  }
  +  
  +  
  +}
  +
  +class PrintReferenceVisitor extends SourceVisitor {
  +  
  +  analysis.ElementAnalysis elementAnalysis;
  +  Engine engine;
  +  
  +  PrintReferenceVisitor(this.engine, this.elementAnalysis, options, lineInfo, source, preSelection) : super(options, lineInfo, source, preSelection) {
  +    
  +    /*
       this.writer = writer;
       //elementAnalysis.sources.values.forEach((analysis.SourceElement source) {
       analysis.SourceElement source = elementAnalysis.sources[elementAnalysis.engine.entrySource]; 
  
positive.code: library typeanalysis.printer;
  
  import 'package:analyzer/src/generated/ast.dart';
  import 'package:analyzer/src/generated/source.dart';
  import 'package:analyzer/src/generated/java_core.dart';
  
negative.code:     print("${indent}}");
    }
  
    visitSourceElement(analysis.SourceElement node) {
      printBlock("file: ${node.source.shortName}", (){
        node.declaredVariables.values.forEach(visit);
        node.nestedBlocks.forEach(visit);
      });
    }
  
    visitClassElement(analysis.ClassElement node) {
      printBlock("class: ${node.name}", (){
        if (!node.declaredVariables.isEmpty){
          print("død og ødelæggelse!!!!!!!");
  