docs: function listBuilder(list, bufb, codec, width) {
    if (!Array.isArray(list)) {
      throw new errors.EncodingError(list, 'Unsure how to encode non-array as list');
    }
  
    if (!width && list.length === 0) {
      bufb.appendUInt8(0x45);
      return;
    }
  
    // Encode all elements into a temp buffer to allow us to front-load appropriate size and count.
    var tempBuilder = new Builder();
    var _len = list.length;
    for (var _i = 0; _i < _len; ++_i) codec.encode(list[_i], tempBuilder);
    var tempBuffer = tempBuilder.get();
  
    // Code, size, length, data
    if (width === 1 || (tempBuffer.length < 0xFF && list.length < 0xFF && width !== 4)) {
      // list8
      if (!width) bufb.appendUInt8(0xC0);
      bufb.appendUInt8(tempBuffer.length + 1);
      bufb.appendUInt8(list.length);
    } else {
      // list32
      if (!width) bufb.appendUInt8(0xD0);
      bufb.appendUInt32BE(tempBuffer.length + 4);
      bufb.appendUInt32BE(list.length);
    }
  
    bufb.appendBuffer(tempBuffer);
  }