@Override
  public boolean hideHints(int mask, boolean onlyOne, boolean editorChanged) {
    EDT.assertIsEdt();
    boolean result = false;
    HintManagerImpl.HintInfo[] arr = myHintsStack.toArray(new HintManagerImpl.HintInfo[0]);
    for (int i = arr.length - 1; i > -1; i--) {
      HintManagerImpl.HintInfo info = arr[i];
      if (!info.hint().isVisible() && !info.hint().vetoesHiding()) {
        myHintsStack.remove(info);
        info.hint().hide();
        continue;
      }

      if ((info.flags() & mask) != 0 || editorChanged && !info.reviveOnEditorChange()) {
        myHintsStack.remove(info);
        info.hint().hide();
        if ((mask & HintManager.HIDE_BY_ESCAPE) == 0 || (info.flags() & HintManager.DONT_CONSUME_ESCAPE) == 0) {
          result = true;
          if (onlyOne) {
            break;
          }
        }
      }
    }
    if (myHintsStack.isEmpty()) {
      updateLastEditor(null);
    }
    return result;
  }
@Override
  public boolean hideHints(int mask, boolean onlyOne, boolean editorChanged)