class SimpleUserToken implements UserToken {

    private String userId;

    private String token;

    private long requestTimes;

    private long lastRequestTime;

    private long signInTime;

    private TokenState state;

    private String type;

    private long maxInactiveInterval;

    public static SimpleUserToken of(Map<String, Object> map) {<FILL_FUNCTION_BODY>}

    public TokenState getState() {
        if (state == TokenState.normal) {
            checkExpired();
        }
        return state;
    }

    @Override
    public boolean checkExpired() {
        if (UserToken.super.checkExpired()) {
            setState(TokenState.expired);
            return true;
        }
        return false;
    }
}

        Object authentication = map.get("authentication");
        if (authentication instanceof Authentication) {
            return FastBeanCopier.copy(map, new SimpleAuthenticationUserToken(((Authentication) authentication)));
        }
        return FastBeanCopier.copy(map, new SimpleUserToken());
    
<no_super_class>