protected void setLineState(int line, TState state) {
    synchronized (lock) {
      lineStates.set(line, state);
      if (!state.getIsDirty() && firstDirtyLine != null && firstDirtyLine.equals(line)) {
        firstDirtyLine++;
      }

      if (!state.getIsDirty() && lastDirtyLine != null && lastDirtyLine.equals(line)) {
        firstDirtyLine = null;
        lastDirtyLine = null;
      }
    }
  }