public function addCondition($field, $operator = null, $value = null)
    {
        if (is_array($field)) {
            $this->conditions[] = [$field];

            return $this;

            /*
            $or = $this->persistence->orExpr();

            foreach ($field as list($field, $operator, $value)) {
                if (is_string($field)) {
                    $f = $this->hasField($field);
                    if (!$f) {
                        throw new Exception([
                            'Field does not exist',
                            'model' => $this,
                            'field' => $field,
                        ]);
                    }
                } elseif ($field instanceof Field) {
                    $f = $field;
                }

                $or->where($f, $operator, $value);
            }

            return $this;
            */
        }

        $f = (is_string($field) || $field instanceof Field) ? $this->getField($field) : false;
        if ($f) {
            if ($operator === '=' || func_num_args() == 2) {
                $v = $operator === '=' ? $value : $operator;

                if (!is_object($v) && !is_array($v)) {
                    $f->system = true;
                    $f->default = $v;
                }
            }
        }

        $this->conditions[] = func_get_args();

        return $this;
    }