def concat other_frames
      raise TypeError unless other_frames.kind_of?(Frames)
      # data
      this_data = Tempfile.new 'this', binmode: true
      self.frames_data_as_io this_data
      other_data = Tempfile.new 'other', binmode: true
      other_frames.frames_data_as_io other_data
      this_size = this_data.size
      other_data.rewind
      while d = other_data.read(BUFFER_SIZE) do
        this_data.print d
      end
      other_data.close!
      # meta
      other_meta = other_frames.meta.collect do |m|
        x = m.dup
        x[:offset] += this_size
        x
      end
      @meta.concat other_meta
      # close
      overwrite this_data
      this_data.close!
      self
    end
def concat other_frames
      raise TypeError unless other_frames.kind_of?(Frames)
      # data
      this_data = Tempfile.new 'this', binmode: true
      self.frames_data_as_io this_data
      other_data = Tempfile.new 'other', binmode: true
      other_frames.frames_data_as_io other_data
      this_size = this_data.size
      other_data.rewind
      while d = other_data.read(BUFFER_SIZE) do
        this_data.print d
      end
      other_data.close!
      # meta
      other_meta = other_frames.meta.collect do |m|
        x = m.dup
        x[:offset] += this_size
        x
      end
      @meta.concat other_meta
      # close
      overwrite this_data
      this_data.close!
      self
    end
Appends the frames in the other Frames into the tail of self.
 It is destructive like Array does.