private synchronized void doUpdate(boolean isDataValid,
                                     boolean isReadOnly,
                                     @NotNull String text,
                                     @NotNull Consumer<? super Node> edtFireTreeNodesChangedQueue) {
    boolean cachedValid = isValid();
    boolean cachedReadOnly = isFlagSet(CACHED_READ_ONLY_MASK);

    if (isDataValid != cachedValid ||
        isReadOnly != cachedReadOnly ||
        myCachedTextHash != text.hashCode() ||
        isFlagSet(FORCE_UPDATE_REQUESTED_MASK)) {
      setFlag(CACHED_INVALID_MASK, !isDataValid);
      setFlag(CACHED_READ_ONLY_MASK, isReadOnly);
      setFlag(FORCE_UPDATE_REQUESTED_MASK, false);

      myCachedTextHash = text.hashCode();
      updateNotify();
      edtFireTreeNodesChangedQueue.consume(this);
    }
    setFlag(UPDATED_MASK, true);
  }
private synchronized void doUpdate(boolean isDataValid,
                                     boolean isReadOnly,
                                     @NotNull String text,
                                     @NotNull Consumer<? super Node> edtFireTreeNodesChangedQueue)