# File lib/innodb/page/index.rb, line 970
  def each_region
    unless block_given?
      return enum_for(:each_region)
    end

    super do |region|
      yield region
    end

    yield({
      :offset => pos_index_header,
      :length => size_index_header,
      :name   => :index_header,
      :info   => "Index Header",
    })

    yield({
      :offset => pos_fseg_header,
      :length => size_fseg_header,
      :name   => :fseg_header,
      :info   => "File Segment Header",
    })

    yield({
      :offset => pos_infimum - 5,
      :length => size_mum_record + 5,
      :name   => :infimum,
      :info   => "Infimum",
    })

    yield({
      :offset => pos_supremum - 5,
      :length => size_mum_record + 5,
      :name   => :supremum,
      :info   => "Supremum",
    })

    directory_slots.times do |n|
      yield({
        :offset => pos_directory - (n * 2),
        :length => 2,
        :name   => :directory,
        :info   => "Page Directory",
      })
    end

    each_garbage_record do |record|
      yield({
        :offset => record.offset - record.header[:length],
        :length => record.length + record.header[:length],
        :name   => :garbage,
        :info   => "Garbage",
      })
    end

    each_record do |record|
      yield({
        :offset => record.offset - record.header[:length],
        :length => record.header[:length],
        :name   => :record_header,
        :info   => "Record Header",
      })

      yield({
        :offset => record.offset,
        :length => record.length || 1,
        :name   => :record_data,
        :info   => "Record Data",
      })
    end

    nil
  end