def METHOD_NAME():
    shared_lock = RLock()
    shared_queue = Queue()
    # Create the two installers with the same shared lock
    installer_1 = LockingTestPackageInstaller(queue=shared_queue, install_lock=shared_lock)
    installer_2 = LockingTestPackageInstaller(queue=shared_queue, install_lock=shared_lock)
    # Set that the installer 1 should wait for event 1 and start
    event_installer_1 = Event()
    installer_1.set_event(event_installer_1, "installer1")
    FuncThread(func=installer_1.install).start()
    # Create a new event and set it as the new event for installer 2 to wait for
    event_installer_2 = Event()
    installer_2.set_event(event_installer_2, "installer2")
    # Again, run the installer in a new thread
    FuncThread(func=installer_2.install).start()
    # Wait for installer 1 to wait for the event (it acquired the shared lock)
    installer_1.about_to_wait.wait()
    # Release the second installer (by setting the event)
    event_installer_2.set()
    # Afterwards release the first installer
    event_installer_1.set()
    first_finished_installer = shared_queue.get(block=True)
    # Since the first installer should have the lock when being first run, ensure it finishes first
    assert first_finished_installer == "installer1"