This provides an interface to basic text based displays. There may be multiple displays associated with a device and the displays that are available may change at any rate. It is possible for a display to support user input, which in this case it will generate key events. A single hardware display may be shared by multiple instances of these classes, which one is actually visible is implementation dependent. Primary displays are ones that will never be removed. Primary displays are always listed first. Auxiliary displays are ones that may be dynamically added and removed. Set text on a display may be lost depending on the implementation such as if it implements scrolling in a specific fashion or the text does not fit. As such, obtained text may be what is visible or might be what was not truncated when set. Thus if {@code "SquirrelJME"} was set to the display and scrolling was enabled, then it might return that text or something such as {@code "JMESquirrel"}. An exception to this is line breaks where if a line contains too much text it flows onto the next line, in this case the text is treated as a single line and the break is not in the returned text. Setting of text may enable scrolling if it is available. Color selection should always be the closest matching color that is supported on a given display. Internally to SquirrelJME, this class acts as a wrapper around display driver interfaces which are implemented via the service loader. If a display supports user input then it must implement the {@link javax.microedition.key.InputDevice} interface.