class Issue {

    private final Throwable throwable;
    private final String message;
    private final Level level;

    /**
     * Constructs a new issue with a throwable and a level.
     * <p>
     * The message is set based on throwable.
     *
     * @param throwable throwable
     * @param level     level
     */
    public Issue(Throwable throwable, Level level) {
        this.throwable = throwable;
        this.level = level;
        this.message = throwable.getMessage();
    }

    /**
     * Constructs a new issue with a message, level and throwable.
     *
     * @param message   message
     * @param level     level
     * @param throwable throwable
     */
    public Issue(String message, Level level, Throwable throwable) {
        this.throwable = throwable;
        this.level = level;
        this.message = message;
    }

    /**
     * Constructs a new issue with a message and a level.
     *
     * @param message message
     * @param level   level
     */
    public Issue(String message, Level level) {
        this.message = message;
        this.level = level;
        this.throwable = null;
    }

    /**
     * Returns this issue's message.
     *
     * @return message
     */
    public String getMessage() {
        return message;
    }

    /**
     * Returns this issue's level.
     *
     * @return level
     */
    public Level getLevel() {
        return level;
    }

    /**
     * Returns this issue's throwable.
     *
     * @return throwable or null if unset
     */
    public Throwable getThrowable() {
        return throwable;
    }

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

    public enum Level {

        INFO(100),
        WARNING(200),
        SEVERE(500),
        CRITICAL(1000);
        private final int levelInt;

        Level(int levelInt) {
            this.levelInt = levelInt;
        }

        public int toInteger() {
            return levelInt;
        }
    }
}

        return "Issue{" + "message=" + message + ", level=" + level + '}';
    
<no_super_class>