public RecordDeserializer<T> getRecordDeserializer(String[] tmpDirectories) { if (!useCompression) { return new SpillingAdaptiveSpanningRecordDeserializer<T>(tmpDirectories); } else { RecordDeserializer<BufferDeserializationDelegate> internalDeser = new SpillingAdaptiveSpanningRecordDeserializer<>(tmpDirectories); BufferDeserializationDelegate internalDeserDelegate = new DecompressionBufferTransformer(compressionFactory.get()); return new CompositeSpillingAdaptiveSpanningRecordDeserializer<T>(tmpDirectories, internalDeser, internalDeserDelegate); } }