public function addFilter($param, $value = null, array $options = null)
    {
        if (is_string($param) && $value !== null) {
            $expr = $this->createFilter();
            $expr->setProperty($param);
            $expr->setValue($value);
        } else {
            $expr = $param;
        }

        $expr = $this->processFilter($expr);

        /** @deprecated 0.3 */
        if (is_array($param) && isset($param['options'])) {
            $expr->setData($param['options']);
        }

        if (is_array($options)) {
            $expr->setData($options);
        }

        $this->filters[] = $this->parseFilterWithModel($expr);
        return $this;
    }