# File lib/rubytorrent/package.rb, line 379
  def add_block(b)
    @valid = nil
    write = false
    new_have = @state_m.synchronize { @have.fill AwesomeRange.new(b.begin ... (b.begin + b.length)) }
    if new_have != @have
      @have = new_have
      write = true
    end
    
    write_bytes(b.begin, b.data) if write
    send_event(:complete) if complete?
  end