class User {

    private String id;
    private String username;
    private Date cookieTimestamp;
    private boolean timeouted;
    private final Map<String, Object> attrs = new HashMap<>();

    public User(String username) {
        this.username = username;
    }

    /**
     * Construct User object.
     * @param username username
     * @param id user ID
     */
    public User(String username, String id) {
        this.username = username;
        this.id = id;
    }

    /**
     * Construct User object.
     * @param username username
     * @param id user ID
     * @param cookieTimestamp cookie time stamp
     * @param timeouted is the user timed out
     */
    public User(String username, String id, Date cookieTimestamp, boolean timeouted) {
        this(username, id);
        this.cookieTimestamp = cookieTimestamp;
        this.timeouted = timeouted;
    }

    public String getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Date getCookieTimestamp() {
        return cookieTimestamp;
    }

    public boolean getTimeouted() {
        return isTimeouted();
    }

    public boolean isTimeouted() {
        return timeouted;
    }

    /**
     * Set custom user property.
     *
     * @param key the key
     * @param value the value
     * @return the value previously associated with the key
     */
    public Object setAttribute(String key, Object value) {
        return attrs.put(key, value);
    }

    @Override
    public String toString() {<FILL_FUNCTION_BODY>}
}

        return "User{" + "id=" + id + ", username=" + username + ", cookieTimestamp=" + cookieTimestamp +
                ", timeouted=" + timeouted + ", attrs=" + attrs + '}';
    
<no_super_class>