@Override
    public void running(BehaviorEvent event) {
        if (state != IDLE) {
            int x = event.getX(), y = event.getY();
            if (group.contains(x, y)) {
                Point p = group.parentToChild(new Point(x, y));
                List<GraphicalObject> children = group.getChildren();
                for (GraphicalObject o : children) {
                    Rectangle br = o.getBoundingBox();
                    if (br.contains(p) && o instanceof Selectable) {
                        if (!firstOnly) {
                            hovered = ((Selectable) o);
                            hovered.setInterimSelected(true);
                            state = RUNNING_INSIDE;
                        }
                        return;
                    }
                }
                if (hovered != null) {
                    hovered.setInterimSelected(false);
                    hovered = null;
                    state = RUNNING_OUTSIDE;
                }
            } else {
                if (hovered != null) {
                    hovered.setInterimSelected(false);
                    hovered = null;
                    state = RUNNING_OUTSIDE;
                }
            }
        }
    }