/* package */TrackerRequest (
        Sha1Hash infoHash, PeerId peerId, int port, long uploaded, long downloaded, long left, Boolean compact,
        boolean noPeerId, Event event, InetAddress ip, int numWant, int key, byte[] trackerId)
    {
        if (infoHash == null)
            throw new NullPointerException("Null Hash");
        if (peerId == null)
            throw new NullPointerException("Null PeerId");
        if (event == null)
            throw new NullPointerException("Null Event");

        if (port < 0 | port >= 65535 | uploaded < 0 | downloaded < 0 | left < 0)
            throw new IllegalArgumentException();

        this.infoHash = infoHash;
        this.peerId = peerId;
        this.port = port;
        this.uploaded = uploaded;
        this.downloaded = downloaded;
        this.left = left;
        this.compact = compact;
        this.noPeerId = noPeerId;
        this.event = event;
        this.ip = ip;
        this.numWant = numWant;
        this.key = key;
        this.trackerId = (trackerId == null) ? null : Arrays.copyOf(trackerId, trackerId.length);
    }