@Override public boolean handleIfPossible(Event event) { if (!getBoundClass().isInstance(event)) { return false; } if (event.getClass() == getBoundClass()) { return target != null && target.handleIfPossible(event); } for (ClassTree<? extends E> classTree : subclasses.values()) { boolean result = classTree.handleIfPossible(event); if (result) return true; } return target != null && target.handleIfPossible(event); }