# File ruby/bstream.rb, line 226
        def write_array(arg)
          return write_null if arg.nil? 
          return write_zero_array(arg) if arg.size == 0

          head = (Symbol === arg[0]) ? arg[0] : nil

          begin
                type,array = check_type_array(arg)

                case type
                when T_NULL
                  return write_zero_array(array)
                when T_DECIMAL
                  return write_decimal_array(array)
                when T_INTEGER8
                  return write_int8_array(array)
                when T_INTEGER4
                  return write_int4_array(array)
                when T_INTEGER2
                  return write_int2_array(array)
                when T_INTEGER1
                  return write_int1_array(array)
                when T_FLOAT
                  return write_float_array(array)
                when T_DOUBLE
                  return write_double_array(array)
                when T_STRING
                  return write_string_array(array)
                when T_BOOLEAN_TRUE
                  return write_bool_array(array)
                else
                  write_list(arg)
                end
          ensure
                arg.unshift(head) if head
          end
        end