docs: public static byte[] getVariableByteSigned(int value) {
          long absValue = Math.abs((long) value);
          if (absValue < 64) { // 2^6
              // encode the number in a single byte
              if (value < 0) {
                  return new byte[]{(byte) (absValue | 0x40)};
              }
              return new byte[]{(byte) absValue};
          } else if (absValue < 8192) { // 2^13
              // encode the number in two bytes
              if (value < 0) {
                  return new byte[]{(byte) (absValue | 0x80), (byte) ((absValue >> 7) | 0x40)};
              }
              return new byte[]{(byte) (absValue | 0x80), (byte) (absValue >> 7)};
          } else if (absValue < 1048576) { // 2^20
              // encode the number in three bytes
              if (value < 0) {
                  return new byte[]{(byte) (absValue | 0x80), (byte) ((absValue >> 7) | 0x80),
                          (byte) ((absValue >> 14) | 0x40)};
              }
              return new byte[]{(byte) (absValue | 0x80), (byte) ((absValue >> 7) | 0x80), (byte) (absValue >> 14)};
          } else if (absValue < 134217728) { // 2^27
              // encode the number in four bytes
              if (value < 0) {
                  return new byte[]{(byte) (absValue | 0x80), (byte) ((absValue >> 7) | 0x80),
                          (byte) ((absValue >> 14) | 0x80), (byte) ((absValue >> 21) | 0x40)};
              }
              return new byte[]{(byte) (absValue | 0x80), (byte) ((absValue >> 7) | 0x80),
                      (byte) ((absValue >> 14) | 0x80), (byte) (absValue >> 21)};
          } else {
              // encode the number in five bytes
              if (value < 0) {
                  return new byte[]{(byte) (absValue | 0x80), (byte) ((absValue >> 7) | 0x80),
                          (byte) ((absValue >> 14) | 0x80), (byte) ((absValue >> 21) | 0x80),
                          (byte) ((absValue >> 28) | 0x40)};
              }
              return new byte[]{(byte) (absValue | 0x80), (byte) ((absValue >> 7) | 0x80),
                      (byte) ((absValue >> 14) | 0x80), (byte) ((absValue >> 21) | 0x80), (byte) (absValue >> 28)};
          }
      }