void append(DNSIncoming that)
    {
        if (this.isQuery() && this.isTruncated() && that.isQuery())
        {
            if (that.numQuestions > 0) {
                if (Collections.EMPTY_LIST.equals(this.questions))
                    this.questions = Collections.synchronizedList(new ArrayList(that.numQuestions));

                this.questions.addAll(that.questions);
                this.numQuestions += that.numQuestions;
            }
            
            if (Collections.EMPTY_LIST.equals(answers))
            {
                answers = Collections.synchronizedList(new ArrayList());
            }

            if (that.numAnswers > 0)
            {
                this.answers.addAll(this.numAnswers, that.answers.subList(0, that.numAnswers));
                this.numAnswers += that.numAnswers;
            }
            if (that.numAuthorities > 0)
            {
                this.answers.addAll(this.numAnswers + this.numAuthorities, that.answers.subList(that.numAnswers, that.numAnswers + that.numAuthorities));
                this.numAuthorities += that.numAuthorities;
            }
            if (that.numAdditionals > 0)
            {
                this.answers.addAll(that.answers.subList(that.numAnswers + that.numAuthorities, that.numAnswers + that.numAuthorities + that.numAdditionals));
                this.numAdditionals += that.numAdditionals;
            }
        }
        else
        {
            throw new IllegalArgumentException();
        }
    }