realize = (conditionReference) => {
      const condition = this.engine.conditions.get(conditionReference.condition)
      if (!condition) {
        if (this.engine.allowUndefinedConditions) {
          // undefined conditions always fail
          conditionReference.result = false
          return Promise.resolve(false)
        } else {
          throw new Error(
            `No condition ${conditionReference.condition} exists`
          )
        }
      } else {
        // project the referenced condition onto reference object and evaluate it.
        delete conditionReference.condition
        Object.assign(conditionReference, deepClone(condition))
        return evaluateCondition(conditionReference)
      }
    }
Dereferences the condition reference and then evaluates it.
@param {Condition} conditionReference
@returns {Promise(boolean)} condition evaluation result