anchor.diff:      return isolate.chromeService.getFileContents(fileUuid)
           .then((String contents) => analyzer.analyzeString(sdk, contents))
           .then((analyzer.AnalyzerResult result) => result);
  +  }
  +}
  +
  +class _Range {
  +  int startOffset = null;
  +  int endOffset = null;
  +
  +  _Range(this.startOffset, this.endOffset);
  +  _Range.fromAstNode(analyzer.AstNode node) {
  +    startOffset = node.offset;
  +    endOffset = node.end;
     }
   }
   
  
positive.code: 
          for (analyzer.VariableDeclaration variable in variables.variables) {
            outline.entries.add(_populateOutlineEntry(
                new OutlineTopLevelVariable(variable.name.name), declaration,
                declaration));
          }
        } else if (declaration is analyzer.ClassDeclaration) {
          OutlineClass outlineClass = new OutlineClass(declaration.name.name);
          outline.entries.add(
              _populateOutlineEntry(outlineClass, declaration.name, declaration));
  
          for (analyzer.ClassMember member in declaration.members) {
            if (member is analyzer.MethodDeclaration) {
              if (member.isGetter || member.isSetter) {
                outlineClass.members.add(_populateOutlineEntry(
                    new OutlineAccessor(member.name.name, member.isSetter),
                    member.name, member));
              } else {
                outlineClass.members.add(_populateOutlineEntry(
                    new OutlineMethod(member.name.name), member, member));
              }
            } else if (member is analyzer.FieldDeclaration) {
              analyzer.VariableDeclarationList fields = member.fields;
              for (analyzer.VariableDeclaration field in fields.variables) {
                outlineClass.members.add(_populateOutlineEntry(
                    new OutlineProperty(field.name.name), field, field.parent));
              }
            }
          }
        } else if (declaration is analyzer.FunctionDeclaration) {
          outline.entries.add(_populateOutlineEntry(new OutlineTopLevelFunction(
              declaration.name.name), declaration.name, declaration));
        } else {
          print("${declaration.runtimeType} is unknown");
        }
  
negative.code:     return outline;
    }
  
    OutlineEntry _populateOutlineEntry(OutlineEntry outlineEntry, _Range name,
        _Range body) {
      outlineEntry.nameStartOffset = name.startOffset;
      outlineEntry.nameEndOffset = name.endOffset;
      outlineEntry.bodyStartOffset = body.startOffset;
      outlineEntry.bodyEndOffset = body.endOffset;
      return outlineEntry;
    }
  
  