private void closeAll() {
   if (parent != null) {
     parent.dispose();
   }
   if (dialog != null) {
     dialog.dispose();
   }
   if (frame != null) {
     frame.dispose();
   }
   if (window != null) {
     window.dispose();
   }
 }
  public void doTest() throws Exception {

    robot.waitForIdle(delay);

    parent.clickOpenButton(robot);
    robot.waitForIdle(delay);

    dialog.activated.waitForFlagTriggered();
    assertTrue(
        dialog.activated.flag(),
        "Dialog did not trigger " + "Window Activated event when it became visible");

    dialog.closeGained.waitForFlagTriggered();
    assertTrue(
        dialog.closeGained.flag(),
        "the 1st button did not gain focus " + "when the Dialog became visible");

    assertTrue(
        dialog.closeButton.hasFocus(),
        "the 1st button in the Dialog " + "gained focus but lost it afterwards");

    dialog.openGained.reset();

    robot.type(KeyEvent.VK_TAB);

    dialog.openGained.waitForFlagTriggered();
    assertTrue(
        dialog.openGained.flag(),
        "Tab navigation did not happen properly on Dialog. Open button "
            + "did not gain focus on tab press when parent frame is visible");

    dialog.clickOpenButton(robot);
    robot.waitForIdle(delay);

    frame.activated.waitForFlagTriggered();
    assertTrue(
        frame.activated.flag(),
        "Frame did not trigger activated when "
            + "made visible. Dialog and its parent frame are visible");

    frame.checkUnblockedFrame(robot, "Frame is the parent of a visible Dialog.");
    window.checkUnblockedWindow(robot, "Frame and its child Dialog are visible.");

    robot.waitForIdle(delay);

    EventQueue.invokeAndWait(this::closeAll);
  }
  private void createGUI() {

    parent = new CustomFrame();
    parent.setTitle("Parent");
    parent.setLocation(50, 50);

    dialog = new CustomDialog(parent);
    dialog.setTitle("Dialog");
    dialog.setModalityType((Dialog.ModalityType) null);
    dialog.setLocation(250, 50);

    frame = new TestFrame();
    frame.setTitle("Frame");
    frame.setLocation(50, 250);

    window = new TestWindow(frame);
    window.setLocation(250, 250);

    parent.setVisible(true);
  }