/// <summary>
 /// Write all trees to pending buffer
 /// </summary>
 /// <param name="blTreeCodes">The number/rank of treecodes to send.</param>
 public void SendAllTrees(int blTreeCodes)
 {
     blTree.BuildCodes();
     literalTree.BuildCodes();
     distTree.BuildCodes();
     pending.WriteBits(literalTree.numCodes - 257, 5);
     pending.WriteBits(distTree.numCodes - 1, 5);
     pending.WriteBits(blTreeCodes - 4, 4);
     for (int rank = 0; rank < blTreeCodes; rank++)
     {
         pending.WriteBits(blTree.length[BL_ORDER[rank]], 3);
     }
     literalTree.WriteTree(blTree);
     distTree.WriteTree(blTree);
 }