code: public Signal<Object> events () {
      if (events == null) events = new Signal<Object>() {
        @Override protected void connectionAdded () {
          setInteractive(true);
        }
        @Override protected void connectionRemoved () {
          if (!hasConnections() && deactivateOnNoListeners()) setInteractive(false);
        }
      };
      return events;
    }
docs: Returns a signal via which events may be dispatched "on" this layer. The {@code Dispatcher}
  mechanism uses this to dispatch (and listen for) mouse, pointer and touch events to the layers
  affected by them. A game can also use this to dispatch any other kinds of events on a
  per-layer basis, with the caveat that all listeners are notified of every event and each must
  do a type test on the event to determine whether it matches.
  
  <p>Also, any layer that has one or more listeners on its events signal is marked as {@link
  #interactive}. Further, any {@link GroupLayer} which has one or more interactive children is
  also marked as interactive. This allows {@code Dispatcher}s to be more efficient in their
  dispatching of UI events.