public byte[] getNextTag() {
        byte[] tagBytes = null;

        if (tagPool != null) {
            tagBytes = tagPool.pollFirst();
        }

        if (tagBytes == null) {
            long tag = nextTagId++;
            int size = encodingSize(tag);

            tagBytes = new byte[size];

            for (int i = 0; i < size; ++i) {
                tagBytes[size - 1 - i] = (byte) (tag >>> (i * 8));
            }
        }

        return tagBytes;
    }
@Test
    public void testTagArrayGrowsWithTagValue() {
        AmqpTransferTagGenerator tagGen = new AmqpTransferTagGenerator(false);

        for (int i = 0; i < 512; ++i) {
            byte[] tag = tagGen.getNextTag();

            if (i < 256) {
                assertEquals(1, tag.length);
            } else {
                assertEquals(2, tag.length);
            }
        }
    }