private function verifyHandler(callable $func): bool
    {
        $reflection = Func::getReflection($func);
        $params = $reflection->getParameters();
        if (count($params) !== 2) {
            return false;
        }

        list($value, $validator) = $params;

        # `$value` must
        # - have no typehint
        # - not be optional
        # - be passed by reference
        if (
            $value->getType() !== null ||
            $value->isOptional()
            //!$value->isPassedByReference()
        ) {
            return false;
        }

        # validator must
        # - have a typehint of \sndsgd\form\Validator
        # - be optional
        # - have a default value of `null`
        $type = $validator->getType();
        if (
            !$type ||
            (string) $type !== \sndsgd\form\Validator::class ||
            !$type->allowsNull()
        ) {
            return false;
        }

        # return type must be boolean
        $returnType = $reflection->getReturnType();
        if (!$returnType || (string) $returnType !== "bool") {
            return false;
        }

        $this->classname = __CLASS__."\\".md5($reflection);
        return true;
    }