# File lib/innodb/util/buffer_cursor.rb, line 331
  def get_ic_uint32(flag=nil)
    name("ic_uint32") {
      if !flag
        flag = peek { name("uint8_or_flag") { get_uint8 } }
      end

      case
      when flag < 0x80
        adjust(+1)
        flag
      when flag < 0xc0
        name("uint16") { get_uint16 } & 0x7fff
      when flag < 0xe0
        name("uint24") { get_uint24 } & 0x3fffff
      when flag < 0xf0
        name("uint32") { get_uint32 } & 0x1fffffff
      when flag == 0xf0
        adjust(+1) # Skip the flag byte.
        name("uint32+1") { get_uint32 }
      else
        raise "Invalid flag #{flag.to_s} seen"
      end
    }
  end