code: def make_futures_info(cls):
      return DataFrame(
          {
              "sid": [10001, 10002, 10003],
              "root_symbol": ["FOO", "BAR", "BAZ"],
              "symbol": ["FOOA", "BARA", "BAZA"],
              "start_date": [cls.START_DATE] * 3,
              "end_date": [cls.END_DATE] * 3,
              # TODO: Make separate from 'end_date'
              "notice_date": [cls.END_DATE] * 3,
              "expiration_date": [cls.END_DATE] * 3,
              "multiplier": [500] * 3,
              "exchange": ["CMES"] * 3,
          }
      )
  
imports: from numpy import array, nan
  from numpy.testing import assert_almost_equal
  from pandas import DataFrame, Timestamp
  from zipline.assets import Equity, Future
  from zipline.data.dispatch_bar_reader import AssetDispatchMinuteBarReader, AssetDispatchSessionBarReader
  from zipline.data.resample import MinuteResampleSessionBarReader, ReindexMinuteBarReader, ReindexSessionBarReader
  from zipline.testing.fixtures import WithBcolzEquityMinuteBarReader, WithBcolzEquityDailyBarReader, WithBcolzFutureMinuteBarReader, WithTradingSessions, ZiplineTestCase
label_desc: Use image node_id 3 for calling the AssetDispatchMinuteBarTestCase obj's underlying member method code with example usage: obj.make_futures_info(cls) and returns: DataFrame