I have lately been working on a gui library where there is a GuiManager class that handles the stack of user interfaces a player has open (meaning, when the top menu closes, the one below opens). It is imperative that only one instance exists per plugin as multiple instances within the same plugin would cause strange behavior. My first thought was to avoid the singleton pattern altogether and only create an instance in the plugin's onEnable method, and then pass it through a constructor where needed. But before publishing the library, I want to make sure that everything works in all cases and that it is developer friendly. This led me to think that a singleton might be the way to go, as a developer could not go wrong when accidentally creating a second instance somewhere. Would this be a correct use case of a singleton?