code: function EncryptedMessage(options) {
      var opts = options ? options : {};
      this.constructor.super_.call(this, opts.buffer, opts.offset);
      this.authKey = opts.authKey;
      if (opts.message) {
          if (util.isArray(opts.message)) {
              var messages = [];
              for (var i = 0; i < opts.message.length; i++) {
                  var message = opts.message[i];
                  var isContentRelated = (message.getTypeName().slice(0, 8) != 'mtproto.' || message.getTypeName().slice(-15) == 'invokeWithLayer') ;
                  if (logger.isDebugEnabled()) {
                      logger.debug('Message [%s] is content related? %s', message.getTypeName(), isContentRelated);
                  }
                  messages.push(wrap(message, opts.sequenceNumber, isContentRelated));
              }
              this.body = new mtproto.type.Msg_container({
                  props: {
                      messages: new tl.TypeVector({module: 'mtproto.type', type: '%Message', list: messages})
                  }
              });
              this.innerMessage = createInnerMessage(this.body, opts, false);
          } else {
              this.body = opts.message;
              this.innerMessage = createInnerMessage(this.body, opts, true);
          }
          this.messageId = this.innerMessage.payload.msg_id;
      }
  }
docs: To get an instance for `serialization`:  new EncryptedMessage({message: myMessageBuffer}); Provide the payload as `Buffer`:  To get an instance for `de-serialization`:  new EncryptedMessage({buffer: myBuffer}); Provide a `buffer` containing the plain message from which extract the payload