public MarkerRegistration addMarker(final TextRange range, final String className) {
    final CMPositionOverlay from =
        CMPositionOverlay.create(range.getFrom().getLine(), range.getFrom().getCharacter());
    final CMPositionOverlay to =
        CMPositionOverlay.create(range.getTo().getLine(), range.getTo().getCharacter());
    final CMTextMarkerOptionOverlay options = JavaScriptObject.createObject().cast();
    options.setClassName(className);

    final CMTextMarkerOverlay textMark =
        this.editorOverlay.asMarksManager().markText(from, to, options);
    if (textMark == null) {
      LOG.warning("addMarker: markText returned a undefined TextMarker - range=" + range);
      return null;
    }
    return new MarkerRegistration() {
      @Override
      public void clearMark() {
        textMark.clear();
      }
    };
  }
 public void scrollToLine(int line) {
   this.editorOverlay.scrollIntoView(CMPositionOverlay.create(line, 0));
 }