public synchronized void resetFromChild() {
    if (!myInitResetCompleted) {
      ensureSchemesPanel();

      try {
        resetImpl();
      } finally {
        myInitResetCompleted = true;
      }
    }
  }
  private void revertChanges() {
    if (isSchemeListModified() || isSomeSchemeModified()) {
      myRevertChangesCompleted = false;
    }

    if (!myRevertChangesCompleted) {
      ensureSchemesPanel();

      try {
        resetImpl();
      } finally {
        myRevertChangesCompleted = true;
      }
    }
  }
  @Override
  public synchronized void reset() {
    if (!myInitResetInvoked) {
      try {
        super.reset();
        if (!myInitResetCompleted) {
          ensureSchemesPanel();

          try {
            resetImpl();
          } finally {
            myInitResetCompleted = true;
          }
        }
      } finally {
        myInitResetInvoked = true;
      }

    } else {
      revertChanges();
    }
  }