code: def __init__(self, schema, paths, key, intervals):
      assert (key is None) == (intervals is None)
      self.schema = schema
      self.paths = paths
      self.key = key
  
      if intervals is not None:
          t = hl.expr.impute_type(intervals)
          if not isinstance(t, hl.tarray) and not isinstance(
              t.element_type, hl.tinterval
          ):
              raise TypeError(
                  "'intervals' must be an array of tintervals"
              )
          pt = t.element_type.point_type
          if isinstance(pt, hl.tstruct):
              self._interval_type = t
          else:
              self._interval_type = hl.tarray(
                  hl.tinterval(hl.tstruct(__point=pt))
              )
  
      if intervals is not None and t != self._interval_type:
          self.intervals = [
              hl.Interval(
                  hl.Struct(__point=i.start),
                  hl.Struct(__point=i.end),
                  i.includes_start,
                  i.includes_end,
              )
              for i in intervals
          ]
      else:
          self.intervals = intervals
  
imports: import abc
  import json
  import avro.schema
  import hail
  from hail.ir.utils import make_filter_and_replace, default_row_uid
  from hail.typecheck import typecheck_method, sequenceof, nullable, anytype, oneof
  from hail.utils.misc import escape_str
  from .utils import impute_type_of_partition_interval_array
label_desc: Use image node_id 1 to create a new AvroTableReader object from inherited base classes: TableReader with example: obj = AvroTableReader(schema, paths, key, intervals)