code: public Packet prepend(Consumer<Packet> consumer) {
          prepend = true;
          consumer.accept(this);
          
          while (!stack.isEmpty()) {
              queue.offerFirst(stack.pop());
          }
          
          prepend = false;
          return this;
      }
docs: Prepends data to the front of this {@link Packet}.
  <br><br>
  This is primarily used for headers, such as when one or more of the headers depend on the size
  of the data contained within the {@link Packet} itself.
  
  @param consumer The {@link Consumer} containing calls to add more data to this {@link Packet}.
  @return This {@link Packet} to allow for chained writes.