anchor.diff:    }
   
     void _handleMarkerChange(workspace.MarkerChangeEvent event) {
  -    setMarkers(event.marker);
  +    // TODO(ericarnold): This gets called repeatedly.  Fix.
  +    setMarkers(currentFile.getMarkers());
     }
   
     String _convertMarkerSeverity(int markerSeverity) {
       switch (markerSeverity) {
         case workspace.Marker.SEVERITY_ERROR:
  -        return ace.Annotation.WARNING;
  +        return ace.Annotation.ERROR;
           break;
         case workspace.Marker.SEVERITY_WARNING:
           return ace.Annotation.WARNING;
           break;
         case workspace.Marker.SEVERITY_INFO:
  -        return ace.Annotation.WARNING;
  +        return ace.Annotation.INFO;
           break;
       }
     }
  
positive.code: 
      // Setup the code completion options for the current file type.
      if (file != null) {
        _aceEditor.setOption(
            'enableBasicAutocompletion', path.extension(file.name) != '.dart');
        if (_markerChangeHandler == null) {
          _markerChangeHandler = file.workspace.onMarkerChange.listen(
              _handleMarkerChange);
  
negative.code:   static bool get available => js.context['ace'] != null;
  
    StreamSubscription _markerChangeHandler;
    workspace.File currentFile;
  
    AceContainer(this.parentElement) {
      _aceEditor = ace.edit(parentElement);
  