code: function (options) {
          // return early if options is empty or invalid
          if (!_.isObject(options)) {
              return;
          }
  
          _.mergeDefined(this, /** @lends Certificate.prototype */ {
              /**
               * Unique identifier
               * @type {String}
               */
              id: options.id,
  
              /**
               * Name for user reference
               * @type {String}
               */
              name: options.name,
  
              /**
               * List of match pattern
               * @type {UrlMatchPatternList}
               */
              matches: options.matches && new UrlMatchPatternList({}, options.matches),
  
              /**
               * Private Key
               * @type {{ src: (string) }}
               */
              key: _.isObject(options.key) ? options.key : { src: options.key },
  
              /**
               * Certificate
               * @type {{ src: (string) }}
               */
              cert: _.isObject(options.cert) ? options.cert : { src: options.cert },
  
              /**
               * PFX or PKCS12 Certificate
               * @type {{ src: (string) }}
               */
              pfx: _.isObject(options.pfx) ? options.pfx : { src: options.pfx },
  
              /**
               * passphrase
               * @type {Object}
               */
              passphrase: options.passphrase
          });
      }
docs: Updates the certificate with the given properties.
  
  @param {Certificate~definition=} [options] Object with matches, key, cert and passphrase