# At present, @tuple.kind_of?(Tuple) is essentially an invariant for Array.
  # If we relax this and ensure that every method behaves correctly if 
  # @tuple == nil, then we can omit initializing @tuple here. We cannot
  # easily know whether #initialize is defined in a subclass when this
  # method is called.
  def self.allocate
    ary = super
    ary.instance_eval do
      @start = 0
      @total = 0
      @tuple = Tuple.new 8
    end
    ary
  end