docs: @Override
    public RecordMaterializer<T> prepareForRead(Configuration configuration,
                                                Map<String, String> keyValueMetaData, MessageType fileSchema,
                                                ReadSupport.ReadContext readContext) {
      ThriftMetaData thriftMetaData = ThriftMetaData.fromExtraMetaData(keyValueMetaData);
      try {
        if (thriftClass == null) {
          thriftClass = getThriftClass(keyValueMetaData, configuration);
        }
  
        ThriftType.StructType descriptor = null;
        if (thriftMetaData != null) {
          descriptor = thriftMetaData.getDescriptor();
        } else {
          ScroogeStructConverter schemaConverter = new ScroogeStructConverter();
          descriptor = schemaConverter.convert(thriftClass);
        }
  
        ThriftRecordConverter<T> converter = new ScroogeRecordConverter<T>(
          thriftClass,
          readContext.getRequestedSchema(),
          descriptor);
        return converter;
      } catch (Exception t) {
        throw new RuntimeException("Unable to create Thrift Converter for Thrift metadata " + thriftMetaData, t);
      }
    }