Session extends DynamicDataContainer implements DateHolder { public void changeState(String world, String gm, long time) { worldTimes.updateState(world, gm, time); } Session(UUID uuid, UUID serverUUID, long sessionStart, String world, String gm);  Session(
            int id, UUID uuid, UUID serverUUID,
            long sessionStart, long sessionEnd,
            int mobKills, int deaths, long afkTime
    ); void endSession(long endOfSession); void changeState(String world, String gm, long time); void playerKilled(PlayerKill kill); void mobKilled(); void died(); long getLength(); @Override long getDate(); void setWorldTimes(WorldTimes worldTimes); @Override boolean equals(Object o); boolean isFetchedFromDB(); void addAFKTime(long timeAFK); void setSessionID(int sessionID); void setAsFirstSessionIfMatches(Long registerDate); boolean isFirstSession(); List<PlayerKill> getPlayerKills(); @Override int hashCode(); void setPlayerKills(List<PlayerKill> playerKills); @Override String toString(); void updateState();  }
@Test void worldTimesWorks() { long time = System.currentTimeMillis(); Session session = new Session(null, serverUUID, time, "One", "Survival"); session.changeState("Two", "Three", time + 5L); Optional<WorldTimes> optional = session.getValue(SessionKeys.WORLD_TIMES); assertTrue(optional.isPresent()); WorldTimes worldTimes = optional.get(); assertEquals(5L, worldTimes.getGMTimes("One").getTotal()); }