code: function(fields, options) {
              fields  = this.__resolveFields(fields);
              options = this.__resolveOptions(options);
  
              var property = fields.shift();
  
              if (options.check) {
                  this.__checkProperty(property, {
                      writable: true,
                      method:   'remove',
                      params:  _.toArray(arguments)
                  });
              }
  
              var field, container;
  
              if (fields.length) {
                  field     = _.last(fields);
                  container = this.__getPropertyValue([property].concat(fields).slice(0, -1));
  
                  if (!(field in container)) {
                      return this;
                  }
              }
              else {
                  field     = '_' + property;
                  container = this;
              }
  
              var oldValue =  container[field];
  
              if (fields.length) {
                  delete container[field]
              }
              else {
                  container[field] = undefined;
              }
  
              if (options.emit && this.__checkEmitEvent()) {
                  this.__emitPropertyRemove([property].concat(fields), oldValue);
              }
              return this;
          }
docs: Removes property value.
  Really remove property in contrast to `clear` method
  
  @param {string|array} fields   Property fields
  @param {object}       options  Options (emit, check)
  @returns {clazz|object} this
  
  @this {clazz|object}