private function strictRequestValidate(RequestInterface $request)
    {
        $requestMetadata = $this->validator->getMetadataFor($request);

        $useStrictGroup = false;

        // Search constraints by group "Strict"
        if ($requestMetadata instanceof ClassMetadata) {
            foreach ($requestMetadata->getConstrainedProperties() as $propertyName) {
                $propertyMetadata = $requestMetadata->getPropertyMetadata($propertyName);

                if (count($propertyMetadata)) {
                    $propertyMetadata = array_shift($propertyMetadata);
                } else {
                    continue;
                }

                $constraintsInStrictGroup = $propertyMetadata->findConstraints('Strict');

                if (count($constraintsInStrictGroup)) {
                    $useStrictGroup = true;
                    break;
                }
            }
        }

        if ($useStrictGroup) {
            // The any properties in request class have a "Strict" group validation
            $violationList = $this->validator->validate($request, null, ['Strict']);

            if (count($violationList)) {
                throw ViolationListException::create($violationList);
            }

            return;
        }

        if ($this->validator instanceof VarTagValidatorInterface) {
            $violationList = $this->validator->validateObjectByVarTags($request);

            if (count($violationList)) {
                throw ViolationListException::create($violationList);
            }
        }
    }