class_docstr: Flink-customized datum reader to parse composite data structure, to fit with changed basic type
  serialization in FlinkAvroDecoder.
class_docstr_tok: ["Flink-customized","datum","reader","to","parse","composite","data","structure",",","to","fit","with","changed","basic","type","serialization","in","FlinkAvroDecoder","."]
code: def read_array(
      self, writer_schema, reader_schema, decoder: "FlinkAvroDecoder"
  ):
      read_items = []
      block_count = decoder.read_var_long()
      assert block_count >= 0
      if block_count == 0:
          return read_items
      for i in range(block_count):
          read_items.append(
              self.read_data(
                  writer_schema.items, reader_schema.items, decoder
              )
          )
      decoder.read_var_long()
      return read_items
  
imports: import struct
  from avro.io import AvroTypeException, BinaryDecoder, BinaryEncoder, DatumReader, DatumWriter, SchemaResolutionException, Validate
label_desc: Use image node_id 2 for calling the FlinkAvroDatumReader obj's underlying member method code with example usage: obj.read_array(writer_schema, reader_schema, decoder) and returns: read_items, read_items