class SessionManager {

    private final EventManager eventManager;

    /**
     * Store all Session instances
     */
    private final Map<String, Session> sessionMap;

    /**
     * Create SessionManager
     */
    public SessionManager(EventManager eventManager) {
        this.sessionMap = new ConcurrentHashMap<>(16);
        this.eventManager = eventManager;
    }

    /**
     * Get a Session instance based on the Session id
     *
     * @param id session id
     * @return Session instance
     */
    public Session getSession(String id) {
        return sessionMap.get(id);
    }

    /**
     * Add a session instance to sessionMap
     *
     * @param session session instance
     */
    public void createSession(Session session) {
        sessionMap.put(session.id(), session);
        Event event = new Event();
        event.attribute("session", session);

        eventManager.fireEvent(EventType.SESSION_CREATED, event);
    }

    /**
     * Clean all session instances
     */
    public void clear() {
        sessionMap.clear();
    }

    /**
     * Remove a session
     *
     * @param session session instance
     */
    public void destroySession(Session session) {<FILL_FUNCTION_BODY>}

    public Map<String, Session> sessionMap() {
        return sessionMap;
    }

}

        session.attributes().clear();
        sessionMap.remove(session.id());

        Event event = new Event();
        event.attribute("session", session);

        eventManager.fireEvent(EventType.SESSION_DESTROY, event);
    
<no_super_class>