test_class.file: gazeplay-commons/src/test/java/net/gazeplay/commons/gaze/SecondScreenFactoryTest.java
test_class.identifier: SecondScreenFactoryTest
test_case.body: @Test
      void shouldLaunchSecondScreen() throws InterruptedException {
          Platform.runLater(() -> {
              SecondScreen result = SecondScreenFactory.launch();
              assertNotNull(result);
          });
          TestingUtils.waitForRunLater();
      }
test_case.class_method_signature: SecondScreenFactoryTest.shouldLaunchSecondScreen()
test_case.full_signature: @Test void shouldLaunchSecondScreen()
test_case.identifier: shouldLaunchSecondScreen
test_case.invocations: runLater launch assertNotNull waitForRunLater
test_case.modifiers: @Test
test_case.parameters: ()
test_case.return: void
test_case.signature: void shouldLaunchSecondScreen()
focal_class.file: gazeplay-commons/src/main/java/net/gazeplay/commons/gaze/SecondScreenFactory.java
focal_class.identifier: SecondScreenFactory
focal_class.class_method_signature: SecondScreenFactory.launch()
focal_class.full_signature: public static SecondScreen launch()
focal_class.identifier: launch
focal_class.modifiers: public static
focal_class.parameters: ()
focal_class.return: SecondScreen
focal_class.signature: SecondScreen launch()
focal_method.body: public static SecondScreen launch() {
          final ObservableList<Screen> screens = Screen.getScreens();
  
          final Screen screen1 = screens.get(0);
          final Screen screen2 = screens.size() == 1 ? screens.get(0) : screens.get(1);
  
          log.debug("screen1.getBounds() = " + screen1.getBounds());
          log.debug("screen2.getBounds() = " + screen2.getBounds());
  
          final Stage stage2 = new Stage();
          stage2.setScene(new Scene(new Label("primary")));
          stage2.setX(screen2.getVisualBounds().getMinX());
          stage2.setY(screen2.getVisualBounds().getMinY());
          stage2.setWidth(screen1.getBounds().getWidth());
          stage2.setHeight(screen1.getBounds().getHeight());
  
          final Group root = new Group();
          final Scene scene = new Scene(
              root,
              screen1.getBounds().getWidth(),
              screen1.getBounds().getHeight(),
              Color.BLACK
          );
  
          final Lighting[][] lightingArray = SecondScreen.makeLighting(root, screen2.getBounds());
  
          stage2.setScene(scene);
  
          stage2.show();
  
          return new SecondScreen(stage2, lightingArray);
      }
focal_method.class_method_signature: SecondScreenFactory.launch()
focal_method.full_signature: public static SecondScreen launch()
focal_method.identifier: launch
focal_method.invocations: getScreens get size get get debug getBounds debug getBounds setScene setX getMinX getVisualBounds setY getMinY getVisualBounds setWidth getWidth getBounds setHeight getHeight getBounds getWidth getBounds getHeight getBounds makeLighting getBounds setScene show
focal_method.modifiers: public static
focal_method.parameters: ()
focal_method.return: SecondScreen
focal_method.signature: SecondScreen launch()