code: function (options) {
          if (!_.isObject(options)) {
              return;
          }
  
          var parsedUrl,
              port = _.get(options, 'port') >> 0;
  
          if (_.isString(options.host)) {
              parsedUrl = nodeUrl.parse(options.host);
              // we want to strip the protocol, but if protocol is not present then parsedUrl.hostname will be null
              this.host = parsedUrl.protocol ? parsedUrl.hostname : options.host;
          }
  
          _.isString(options.match) && (this.match = new UrlMatchPattern(options.match));
          _.isString(_.get(options, 'match.pattern')) && (this.match = new UrlMatchPattern(options.match.pattern));
          port && (this.port = port);
          _.isBoolean(options.tunnel) && (this.tunnel = options.tunnel);
          // todo: Add update method in parent class Property and call that here
          _.isBoolean(options.disabled) && (this.disabled = options.disabled);
          _.isBoolean(options.authenticate) && (this.authenticate = options.authenticate);
          _.isString(options.username) && (this.username = options.username);
          _.isString(options.password) && (this.password = options.password);
      }
docs: Updates the properties of the proxy object based on the options provided.
  
  @param {ProxyConfig~definition} options The proxy object structure.