_checkCyclicDependencies(key, visited, path = []) {
      if (visited.has(key)) {
        return [...path, key];
      }
      visited.add(key);
      path.push(key);
      const computed = this.computed[key];
      if (!computed || !computed.dependencies) {
        return null;
      }
      for (const dep of computed.dependencies) {
        if (dep in this.computed) {
          const cyclePath = this._checkCyclicDependencies(dep, new Set(visited), [...path]);
          if (cyclePath) {
            return cyclePath;
          }
        }
      }
      return null;
    }
Checks for cyclic dependencies in the computed properties of the model.

This method recursively traverses the dependencies of a given property to determine
if a cyclic dependency exists. A cyclic dependency occurs when a property ultimately
depends on itself through a chain of other properties.

@param {string} key - The key of the property to check for cyclic dependencies.
@param {Set<string>} visited - A set of visited properties during the traversal.
@param {string[]} [path=[]] - The current path of dependencies being checked.
@returns {string[]|null} - Returns an array representing the cyclic path if a cycle is found,
                           otherwise `null`.