docs: public static long getVarLong(ByteBuffer src) {
      long tmp;
      if ((tmp = src.get()) >= 0) {
        return tmp;
      }
      long result = tmp & 0x7f;
      if ((tmp = src.get()) >= 0) {
        result |= tmp << 7;
      } else {
        result |= (tmp & 0x7f) << 7;
        if ((tmp = src.get()) >= 0) {
          result |= tmp << 14;
        } else {
          result |= (tmp & 0x7f) << 14;
          if ((tmp = src.get()) >= 0) {
            result |= tmp << 21;
          } else {
            result |= (tmp & 0x7f) << 21;
            if ((tmp = src.get()) >= 0) {
              result |= tmp << 28;
            } else {
              result |= (tmp & 0x7f) << 28;
              if ((tmp = src.get()) >= 0) {
                result |= tmp << 35;
              } else {
                result |= (tmp & 0x7f) << 35;
                if ((tmp = src.get()) >= 0) {
                  result |= tmp << 42;
                } else {
                  result |= (tmp & 0x7f) << 42;
                  if ((tmp = src.get()) >= 0) {
                    result |= tmp << 49;
                  } else {
                    result |= (tmp & 0x7f) << 49;
                    if ((tmp = src.get()) >= 0) {
                      result |= tmp << 56;
                    } else {
                      result |= (tmp & 0x7f) << 56;
                      result |= ((long) src.get()) << 63;
                    }
                  }
                }
              }
            }
          }
        }
      }
      return result;
    }