private static DecorationMap withBitSet(final int bitSet) {
    return bitSet == 0 ? EMPTY : new DecorationMap(bitSet);
  }
Bit-set driven decoration -&gt; state map.
Given that both {@link TextDecoration} and {@link TextDecoration.State} are enums, every value of each
can be indexed by its ordinal. The way this works is by combining that property and "inserting" the state index
as value in the text decoration index.

<p>For each possible state value:</p>
<ul>
  <li>{@code State.NOT_SET -> 0b00}</li>
  <li>{@code State.FALSE -> 0b01}</li>
  <li>{@code State.TRUE -> 0b10}</li>
</ul>

<p>we assign one bit position to each decoration value ({@code p} representing the position holding the state value):</p>
<ul>
  <li>{@code TextDecoration.OBFUSCATED -> 0b0000p}</li>
  <li>{@code TextDecoration.BOLD -> 0b000p0}</li>
  <li>{@code TextDecoration.STRIKETHROUGH -> 0b00p00}</li>
  <li>{@code TextDecoration.UNDERLINED -> 0b0p000}</li>
  <li>{@code TextDecoration.ITALIC -> 0bp0000}</li>
</ul>

<p>but since State is tri-state it occupies two bits {@code [0b00, 0b01, 0b10]}, each decoration type must reserve
two bits for itself, expanding 5 bits to 10 bits, two for each decoration type:</p>
<ul>
  <li>{@code TextDecoration.OBFUSCATED -> 0b00000000pp}</li>
  <li>{@code TextDecoration.BOLD -> 0b000000pp00}</li>
  <li>{@code TextDecoration.STRIKETHROUGH -> 0b0000pp0000}</li>
  <li>{@code TextDecoration.UNDERLINED -> 0b00pp000000}</li>
  <li>{@code TextDecoration.ITALIC -> 0bpp00000000}</li>
</ul>

<p>Here the {@code pp} bit pair represents the potential state values from the first list above.</p>

<p>It is however possible to compact this even more using trinary logic and fit all of this into
a single {@code byte}, I however am not doing that because it's more effort than my time's worth.</p>
api/src/main/java/net/kyori/adventure/text/format/DecorationMap.java