code: function mkLong(value, unsigned) {
              if (value && typeof value.low === 'number' && typeof value.high === 'number' && typeof value.unsigned === 'boolean'
                  && value.low === value.low && value.high === value.high)
                  return new ProtoBuf.Long(value.low, value.high, typeof unsigned === 'undefined' ? value.unsigned : unsigned);
              if (typeof value === 'string')
                  return ProtoBuf.Long.fromString(value, unsigned || false, 10);
              if (typeof value === 'number')
                  return ProtoBuf.Long.fromNumber(value, unsigned || false);
              throw Error("not convertible to Long");
          }
docs: Makes a Long from a value.
  @param {{low: number, high: number, unsigned: boolean}|string|number} value Value
  @param {boolean=} unsigned Whether unsigned or not, defaults to reuse it from Long-like objects or to signed for
  strings and numbers
  @returns {!Long}
  @throws {Error} If the value cannot be converted to a Long
  @inner