class FeatureConsumerManager {

    public FeatureConsumer requestConsumer(DataTypeInfo type, boolean isLoadTimeAware)
    {
        Utilities.checkNull(type, "type");
        Utilities.checkNull(type.getTypeKey(), "type.getTypeKey()");

        FeatureConsumer consumer = myConsumerList.get(new Pair<>(type.getTypeKey(), Boolean.valueOf(isLoadTimeAware)));
        if (consumer == null)
        {
            int flushSize = myMantleToolbox.getDataElementCache().getPreferredInsertBlockSize();
            if (flushSize <= 0)
            {
                flushSize = 5000;
            }
            consumer = new DataTypeControllerFeatureConsumer(myMantleToolbox.getDataTypeController(),
                    isLoadTimeAware ? myTimeManager : null, type, flushSize);
            myConsumerList.put(new Pair<>(type.getTypeKey(), Boolean.valueOf(isLoadTimeAware)), consumer);
        }
        return consumer;
    }

    public  FeatureConsumerManager(MantleToolbox mantleToolbox, TimeManager timeManager);

}