class BoltOptions {

    private ConcurrentHashMap<BoltOption<?>, Object> options = new ConcurrentHashMap<BoltOption<?>, Object>();

    /**
     * Get the optioned value.
     * Return default value if option does not exist.
     *
     * @param option target option
     * @return the optioned value of default value if option does not exist.
     */
    @SuppressWarnings("unchecked")
    public <T> T option(BoltOption<T> option) {<FILL_FUNCTION_BODY>}

    /**
     * Set up an new option with specific value.
     * Use a value of {@code null} to remove a previous set {@link BoltOption}.
     *
     * @param option target option
     * @param value option value, null for remove a previous set {@link BoltOption}.
     * @return this BoltOptions instance
     */
    public <T> BoltOptions option(BoltOption<T> option, T value) {
        if (value == null) {
            options.remove(option);
            return this;
        }

        options.put(option, value);
        return this;
    }
}

        Object value = options.get(option);
        if (value == null) {
            value = option.defaultValue();
        }

        return value == null ? null : (T) value;
    
<no_super_class>