setCondition (name, conditions) {
    if (!name) throw new Error('Engine: setCondition() requires name')
    if (!conditions) throw new Error('Engine: setCondition() requires conditions')
    if (!Object.prototype.hasOwnProperty.call(conditions, 'all') && !Object.prototype.hasOwnProperty.call(conditions, 'any') && !Object.prototype.hasOwnProperty.call(conditions, 'not') && !Object.prototype.hasOwnProperty.call(conditions, 'condition')) {
      throw new Error('"conditions" root must contain a single instance of "all", "any", "not", or "condition"')
    }
    this.conditions.set(name, new Condition(conditions))
    return this
  }
sets a condition that can be referenced by the given name.
If a condition with the given name has already been set this will replace it.
@param {string} name - the name of the condition to be referenced by rules.
@param {object} conditions - the conditions to use when the condition is referenced.