anchor.diff:  import 'dart:html' as html;
  +
  +import '../lib/services/services_common.dart' as data;
  +
  +class Test {
  +  Map outlineTopLevelVariableMap = {
  +      "name": "varName",
  +      "startOffset": 10,
  +      "endOffset": 20,
  +      "type": "top-level-variable"};
  +
  +  Map outlineClassMap = {
  +      "name": "className",
  +      "startOffset": 30,
  +      "endOffset": 40,
  +      "abstract": true,
  +      "members": [],
  +      "type": "class"};
  +
  +  Map outlineFunctionMap = {
  +      "name": "functionName",
  +      "startOffset": 50,
  +      "endOffset": 60,
  +      "type": "function"};
  +
  +  Map outlineMethodMap = {
  +      "name": "methodName",
  +      "startOffset": 70,
  +      "endOffset": 80,
  +      "type": "method"};
  +
  +  Map outlineClassVariableMap = {
  +      "name": "variableName",
  +      "startOffset": 90,
  +      "endOffset": 100,
  +      "type": "class-variable"};
  +
  +  data.Outline outline;
  +
  +  test() {
  +    data.OutlineTopLevelVariable outlineTopLevelVariable =
  +        new data.OutlineTopLevelEntry.fromMap(outlineTopLevelVariableMap);
  +
  +    data.OutlineClass outlineEmptyClass =
  +        new data.OutlineTopLevelEntry.fromMap(outlineClassMap);
  +
  +    // Fill the class and re-test
  +    outlineClassMap['members'].add(outlineClassVariableMap);
  +    outlineClassMap['members'].add(outlineMethodMap);
  +
  +    data.OutlineClass outlineClass =
  +        new data.OutlineTopLevelEntry.fromMap(outlineClassMap);
  +
  +    data.OutlineTopLevelFunction outlineFunction =
  +        new data.OutlineTopLevelEntry.fromMap(outlineFunctionMap);
  +    outline = new data.Outline.fromMap({
  +      "entries": [outlineTopLevelVariableMap, outlineClassMap, outlineFunctionMap]});
  +  }
  +}
   
   class Outline {
     html.DivElement _outlineDiv;
  
positive.code:         ..opacity = '0.6';
      _rootList = new html.UListElement();
      _outlineDiv.append(_rootList);
      addClass()
        ..addMethod()
        ..addProperty();
      addVariable();
      addFunction();
    }
  
    void toggle() {
      if (_outlineDiv.style.display == 'none') {
  
negative.code: 
  abstract class OutlineItem {
    html.LIElement _element;
    data.OutlineEntry _model;
  
    OutlineItem(this._model) {
      _element = new html.LIElement();
      _element.text = _model.name;
    }
  }
  
  abstract class OutlineTopLevelItem extends OutlineItem {
    OutlineTopLevelItem(data.OutlineTopLevelEntry model) : super(model);
  }
  
  class OutlineTopLevelVariable extends OutlineTopLevelItem {
    OutlineTopLevelVariable(data.OutlineTopLevelVariable model) : super(model);
  }
  
  class OutlineTopLevelFunction extends OutlineTopLevelItem {
    OutlineTopLevelFunction(data.OutlineTopLevelFunction model) : super(model);
  }
  
  class OutlineClass extends OutlineTopLevelItem {
    var _childrenRootElement = new html.UListElement();
    List<OutlineClassMember> members = [];
  
    OutlineClass(data.OutlineClass model) : super(model) {
      populate(model);
    }
  
    OutlineClassMember _addElement(OutlineClassMember member) {
      _childrenRootElement.append(member._element);
  