private static function evaluateFilterWithSingleQuery($registro, $query, $attri) {
        //echo "<p>evaluando {$registro->name}</p><pre>" . print_r([$query, $attri], true) . "</pre>";
        $contiene = false;
        if (stripos($query, "*%") !== false) {
            $contiene = true;
            $query = str_replace("*%", "", $query);
        }

        if (($numArgs = \Sirgrimorum\CrudGenerator\CrudGenerator::isFunction($registro, $attri)) !== false) {
            //echo "<p>NumArgs $numArgs</p>";
            if (\Sirgrimorum\CrudGenerator\CrudGenerator::isJsonString($query)) {
                $queryArr = json_decode($query, true);
            } else {
                $queryArr = [$query];
            }
            $result = \Sirgrimorum\CrudGenerator\CrudGenerator::callFunction($registro, $attri, $queryArr, $numArgs);
            if ($result === false || $result === null) {
                return false;
            } else {
                $queryObj = array_pop($queryArr);
                if ($result != $queryObj) {
                    return false;
                }
            }
        } elseif (is_string($registro->{$attri})) {
            //echo "<p> stripos es " . stripos($registro->{$attri}, $query) . " jajaj</p>";
            if ($contiene) {
                if (stripos($registro->{$attri}, $query) === false) {
                    return false;
                }
            } else {
                if ($registro->{$attri} != $query) {
                    return false;
                }
            }
        } else {
            if ((string) $registro->{$attri} != $query) {
                return false;
            }
        }
        return true;
    }