private static void initializeSocketServer(
      Component window, WorkspaceTabPanelFunctions controller) {
    // Wrapped in invokeLater to make sure we start the thread after the
    // UI is ready. This is done because the SocketServer relies on
    // a valid parent window for the workspace tree.
    SwingUtilities.invokeLater(
        () -> {
          int port = Constants.getSocketPort();
          try {
            new SocketServer(port, controller).startListening();
          } catch (IOException e) {
            CMessageBox.showError(
                window, String.format("Could not listen on port %s. BinDiff exits.", port));
            System.exit(1);
          }
        });
  }
Parses command line arguments.

@param args the arguments, as passed into {@link #main(String[])}.
@return a list of positional arguments without any options or {@code null} on error.
java/ui/src/main/java/com/google/security/zynamics/bindiff/BinDiff.java