class ConfigurableAgeOffFilter extends Filter implements OptionDescriber {

    @Override
    public void init(SortedKeyValueIterator<Key,Value> source, Map<String,String> options, IteratorEnvironment env) throws IOException {
        super.init(source, options, env);
        
        myEnv = env;
        
        // disabled if this is a system initialized major compaction and we are configured to disable as such
        String disableOnNonFullMajcStr = options.get(AgeOffConfigParams.DISABLE_ON_NON_FULL_MAJC);
        disabled = (disableOnNonFullMajcStr != null) && Boolean.parseBoolean(disableOnNonFullMajcStr) && isSystemInitiatedMajC(env);
        
        // if disabled, then no need to do any further initialization
        if (disabled) {
            return;
        }
        
        Preconditions.checkNotNull(options, "Configuration filename and " + "the default ttl must be set for the ConfigurableAgeOffFilter");
        
        long sessionScanStart = options.containsKey(AgeOffConfigParams.SCAN_START_TIMESTAMP) ? Long.parseLong(options
                        .get(AgeOffConfigParams.SCAN_START_TIMESTAMP)) : System.currentTimeMillis();
        
        initialize(options.get(AgeOffConfigParams.TTL), options.get(AgeOffConfigParams.TTL_UNITS), options.get(AgeOffConfigParams.TTL_SHORT_CIRCUIT),
                        sessionScanStart, options.get(AgeOffConfigParams.FILTER_CONFIG));
        
    }

    public  ConfigurableAgeOffFilter();
    public  ConfigurableAgeOffFilter(ConfigurableAgeOffFilter other, IteratorEnvironment env);

}