@Override
  public String toString() {
    boolean hasLock = myLock != null;
    boolean writeActionPending = hasLock && isWriteActionPending();
    boolean writeActionInProgress = hasLock && isWriteActionInProgress();
    boolean writeAccessAllowed = hasLock && isWriteAccessAllowed();
    return "Application"
           + (getContainerState().get() == ContainerState.COMPONENT_CREATED ? "" : " (containerState " + getContainerStateName() + ") ")
           + (isUnitTestMode() ? " (unit test)" : "")
           + (isInternal() ? " (internal)" : "")
           + (isHeadlessEnvironment() ? " (headless)" : "")
           + (isCommandLine() ? " (command line)" : "")
           + (hasLock ?
              (writeActionPending || writeActionInProgress || writeAccessAllowed ? " (WA" +
                                                                                   (writeActionPending ? " pending" : "") +
                                                                                   (writeActionInProgress ? " inProgress" : "") +
                                                                                   (writeAccessAllowed ? " allowed" : "") +
                                                                                   ")" : "")
                      : " (lock is not ready)"
           )
           + (isReadAccessAllowed() ? " (RA allowed)" : "")
           + (StartupUtil.isImplicitReadOnEDTDisabled() ? " (IR on EDT disabled)" : "")
           + (isInImpatientReader() ? " (impatient reader)" : "")
           + (isExitInProgress() ? " (exit in progress)" : "")
      ;
  }
@Override
  public String toString()