docs: static long getLong(ByteBuffer buffer) {
          long v = buffer.get();
          long value = v & 0x7F;
          if ((v & 0x80) != 0) {
              v = buffer.get();
              value |= (v & 0x7F) << 7;
              if ((v & 0x80) != 0) {
                  v = buffer.get();
                  value |= (v & 0x7F) << 14;
                  if ((v & 0x80) != 0) {
                      v = buffer.get();
                      value |= (v & 0x7F) << 21;
                      if ((v & 0x80) != 0) {
                          v = buffer.get();
                          value |= (v & 0x7F) << 28;
                          if ((v & 0x80) != 0) {
                              v = buffer.get();
                              value |= (v & 0x7F) << 35;
                              if ((v & 0x80) != 0) {
                                  v = buffer.get();
                                  value |= (v & 0x7F) << 42;
                                  if ((v & 0x80) != 0) {
                                      v = buffer.get();
                                      value |= (v & 0x7F) << 49;
                                      if ((v & 0x80) != 0) {
                                          v = buffer.get();
                                          value |= v << 56;
                                      }
                                  }
                              }
                          }
                      }
                  }
              }
          }
          value = (value >>> 1) ^ (-(value & 1));
          return value;
      }