diff --git a/Build/Scripts/annotationChecker.php b/Build/Scripts/annotationChecker.php
index 1cef01ac9ffe6ba250595dd1b583f1eff562668c..b5933e24f685a11b65c87badcb4e2e71604cf24a 100755
--- a/Build/Scripts/annotationChecker.php
+++ b/Build/Scripts/annotationChecker.php
@@ -1,5 +1,6 @@
 #!/usr/bin/env php
 <?php
+
 declare(strict_types=1);
 
 /*
@@ -47,16 +48,12 @@ class NodeVisitor extends NodeVisitorAbstract
                 $negativeLookaheadMatches = [
                     // Annotation tags
                     'Annotation', 'Attribute', 'Attributes', 'Required', 'Target',
-                    // Widely used tags (but not existent in phpdoc)
-                    'fix', 'fixme', 'override',
                     // PHPDocumentor 1 tags
-                    'abstract', 'code', 'deprec', 'endcode', 'exception', 'final', 'ingroup', 'magic', 'name', 'toc', 'tutorial', 'private', 'static', 'staticvar', 'staticVar', 'throw',
+                    'private', 'static', 'staticvar', 'staticVar',
                     // PHPDocumentor 2 tags
-                    'api', 'author', 'category', 'copyright', 'deprecated', 'example', 'filesource', 'global', 'ignore', 'internal', 'license', 'link', 'method', 'package', 'param', 'property', 'property-read', 'property-write', 'return', 'see', 'since', 'source', 'subpackage', 'throws', 'todo', 'TODO', 'usedby', 'uses', 'var', 'version',
-                    // PHPUnit tags
-                    'codeCoverageIgnore', 'codeCoverageIgnoreStart', 'codeCoverageIgnoreEnd', 'dataProvider', 'group', 'skip', 'depends', 'expectedException', 'before', 'requires',
-                    // codeception tags
-                    'env',
+                    'author', 'category', 'copyright', 'deprecated', 'example', 'internal', 'license', 'link', 'param', 'property', 'return', 'see', 'since', 'throws', 'todo', 'TODO', 'var', 'version',
+                    // PHPUnit & codeception tags
+                    'depends', 'requires', 'env',
                     // PHPCheckStyle
                     'SuppressWarnings', 'noinspection',
                     // Extbase related
diff --git a/Build/Scripts/splitAcceptanceTests.php b/Build/Scripts/splitAcceptanceTests.php
index 5c5d19979b400e8357aeefb8179e2c3e64861139..a936d96bc576a05283f9985a844b164b40a150f8 100755
--- a/Build/Scripts/splitAcceptanceTests.php
+++ b/Build/Scripts/splitAcceptanceTests.php
@@ -1,5 +1,6 @@
 #!/usr/bin/env php
 <?php
+
 declare(strict_types=1);
 
 /*
@@ -15,7 +16,6 @@ declare(strict_types=1);
  * The TYPO3 project - inspiring people to share!
  */
 
-use PhpParser\Comment\Doc;
 use PhpParser\Node;
 use PhpParser\NodeTraverser;
 use PhpParser\NodeVisitor\NameResolver;
@@ -188,12 +188,12 @@ class AcceptanceTestCaseVisitor extends NodeVisitorAbstract
     /**
      * @var array[] An array of arrays with test method names and optionally a data provider name
      */
-    private $tests = [];
+    private array $tests = [];
 
     /**
      * @var string Fully qualified test class name
      */
-    private $fqcn;
+    private string $fqcn;
 
     /**
      * Create a list of '@test' annotated methods in a test case
@@ -215,24 +215,20 @@ class AcceptanceTestCaseVisitor extends NodeVisitorAbstract
             $node instanceof \PhpParser\Node\Stmt\ClassMethod
             // The method is public
             && $node->isPublic()
-            // The methods does not start with an "_" (eg. _before())
+            // The method does not start with an "_" (eg. _before())
             && $node->name->name[0] !== '_'
         ) {
             // Found a test
             $test = [
                 'methodName' => $node->name->name,
             ];
-            $docComment = $node->getDocComment();
-            if ($docComment instanceof Doc) {
-                preg_match_all(
-                    '/\s*\s@(?<annotations>[^\s.].*)\n/',
-                    $docComment->getText(),
-                    $matches
-                );
-                foreach ($matches['annotations'] as $possibleDataProvider) {
-                    // See if this test has a data provider attached
-                    if (str_starts_with($possibleDataProvider, 'dataProvider')) {
-                        $test['dataProvider'] = trim(ltrim($possibleDataProvider, 'dataProvider'));
+            foreach ($node->getAttrGroups() as $possibleDataProviderAttributeGroup) {
+                foreach ($possibleDataProviderAttributeGroup->attrs as $possibleDataProviderAttribute) {
+                    // See if that method has the codeception DataProvider attribute attached, too.
+                    $name = $possibleDataProviderAttribute->name->toCodeString();
+                    if ($name === '\\Codeception\\Attribute\\DataProvider') {
+                        $dataProviderMethodName = $possibleDataProviderAttribute->args[0]->value->value;
+                        $test['dataProvider'] = $dataProviderMethodName;
                     }
                 }
             }
@@ -242,8 +238,6 @@ class AcceptanceTestCaseVisitor extends NodeVisitorAbstract
 
     /**
      * Return array of found tests and their data providers
-     *
-     * @return array
      */
     public function getTests(): array
     {
@@ -252,8 +246,6 @@ class AcceptanceTestCaseVisitor extends NodeVisitorAbstract
 
     /**
      * Return Fully qualified class test name
-     *
-     * @return string
      */
     public function getFqcn(): string
     {
diff --git a/typo3/sysext/core/Tests/Acceptance/Application/DbCheck/DbCheckModuleCest.php b/typo3/sysext/core/Tests/Acceptance/Application/DbCheck/DbCheckModuleCest.php
index fd0c5447d465f667ba22101eda39aba06a4e2e69..cc6b733da5cdca11ea4cb7ff83c3c38766238cf8 100644
--- a/typo3/sysext/core/Tests/Acceptance/Application/DbCheck/DbCheckModuleCest.php
+++ b/typo3/sysext/core/Tests/Acceptance/Application/DbCheck/DbCheckModuleCest.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Acceptance\Application\DbCheck;
 
+use Codeception\Attribute\DataProvider;
 use Codeception\Example;
 use Facebook\WebDriver\Remote\RemoteWebDriver;
 use Facebook\WebDriver\Remote\RemoteWebElement;
@@ -71,9 +72,7 @@ final class DbCheckModuleCest
         ];
     }
 
-    /**
-     * @dataProvider recordStatisticsDataProvider
-     */
+    #[DataProvider('recordStatisticsDataProvider')]
     public function seeRecordStatistics(ApplicationTester $I, Example $testData): void
     {
         $this->goToPageAndSeeHeadline($I, 'Record Statistics', 'Records Statistics');
diff --git a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputDateCest.php b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputDateCest.php
index 7893711b9166d016ee90a511985fb8c88a2f05cd..2522990313e96194a4519dcc8f098971b6ee00d5 100644
--- a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputDateCest.php
+++ b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputDateCest.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Acceptance\Application\FormEngine;
 
+use Codeception\Attribute\DataProvider;
 use Codeception\Example;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree;
@@ -71,9 +72,7 @@ final class ElementsBasicInputDateCest extends AbstractElementsBasicCest
         ];
     }
 
-    /**
-     * @dataProvider dbTypeDateEvalDateDataProvider
-     */
+    #[DataProvider('dbTypeDateEvalDateDataProvider')]
     public function dbTypeDateEvalDate(ApplicationTester $I, Example $testData): void
     {
         $this->runInputFieldTest($I, $testData);
@@ -109,9 +108,7 @@ final class ElementsBasicInputDateCest extends AbstractElementsBasicCest
         ];
     }
 
-    /**
-     * @dataProvider dbTypeDateEvalDatetimeDataProvider
-     */
+    #[DataProvider('dbTypeDateEvalDatetimeDataProvider')]
     public function dbTypeDateEvalDatetime(ApplicationTester $I, Example $testData): void
     {
         $this->runInputFieldTest($I, $testData);
@@ -131,9 +128,7 @@ final class ElementsBasicInputDateCest extends AbstractElementsBasicCest
         ];
     }
 
-    /**
-     * @dataProvider dbTypeDateEvalTimeDataProvider
-     */
+    #[DataProvider('dbTypeDateEvalTimeDataProvider')]
     public function dbTypeDateEvalTime(ApplicationTester $I, Example $testData): void
     {
         $this->runInputFieldTest($I, $testData);
@@ -169,9 +164,7 @@ final class ElementsBasicInputDateCest extends AbstractElementsBasicCest
         ];
     }
 
-    /**
-     * @dataProvider dbTypeDateEvalTimeDataProvider_DbTypeDateTime
-     */
+    #[DataProvider('dbTypeDateEvalTimeDataProvider_DbTypeDateTime')]
     public function checkThatValidationWorks_EvalDateTime_DbTypeDateTime(ApplicationTester $I, Example $testData): void
     {
         $this->runInputFieldTest($I, $testData);
diff --git a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputEvalCest.php b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputEvalCest.php
index e68d9e534aea87bdd797c1b498453f3e958dba61..62e74201dda9e22eed66b7fe9652cd32bf161962 100644
--- a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputEvalCest.php
+++ b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputEvalCest.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Acceptance\Application\FormEngine;
 
+use Codeception\Attribute\DataProvider;
 use Codeception\Example;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree;
@@ -88,9 +89,7 @@ final class ElementsBasicInputEvalCest extends AbstractElementsBasicCest
         ];
     }
 
-    /**
-     * @dataProvider simpleEvalInputFieldsDataProvider
-     */
+    #[DataProvider('simpleEvalInputFieldsDataProvider')]
     public function simpleEvalInputFields(ApplicationTester $I, Example $testData): void
     {
         $this->runInputFieldTest($I, $testData);
diff --git a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputRangeCest.php b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputRangeCest.php
index 0e9ddb2bbb6b5f550377117a5a218b40f337c6e1..702a63937b316f164080c47fe816158621df9028 100644
--- a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputRangeCest.php
+++ b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputRangeCest.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Acceptance\Application\FormEngine;
 
+use Codeception\Attribute\DataProvider;
 use Codeception\Example;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree;
@@ -101,9 +102,7 @@ final class ElementsBasicInputRangeCest extends AbstractElementsBasicCest
         ];
     }
 
-    /**
-     * @dataProvider simpleRangeAndMd5FieldsDataProvider
-     */
+    #[DataProvider('simpleRangeAndMd5FieldsDataProvider')]
     public function simpleRangeAndMd5Fields(ApplicationTester $I, Example $testData): void
     {
         $I->click($testData['tab']);
diff --git a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputSimpleCest.php b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputSimpleCest.php
index 95c77d801c7fba8f11fb25c2462314d269a29477..5e650e45eb7de3d71e0a1de29ba73971ec41cfb1 100644
--- a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputSimpleCest.php
+++ b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicInputSimpleCest.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Acceptance\Application\FormEngine;
 
+use Codeception\Attribute\DataProvider;
 use Codeception\Example;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree;
@@ -182,9 +183,7 @@ final class ElementsBasicInputSimpleCest extends AbstractElementsBasicCest
         ];
     }
 
-    /**
-     * @dataProvider simpleInputFieldsDataProvider
-     */
+    #[DataProvider('simpleInputFieldsDataProvider')]
     public function simpleInputFields(ApplicationTester $I, Example $testData): void
     {
         $this->runInputFieldTest($I, $testData);
diff --git a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicNumberCest.php b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicNumberCest.php
index 8a476527b2c7a6da488516d98e780cc9acdc180c..73b5a6558241964c7ecdf766dda8615ef7dd76a4 100644
--- a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicNumberCest.php
+++ b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicNumberCest.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Acceptance\Application\FormEngine;
 
+use Codeception\Attribute\DataProvider;
 use Codeception\Example;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree;
@@ -149,9 +150,7 @@ final class ElementsBasicNumberCest extends AbstractElementsBasicCest
         ];
     }
 
-    /**
-     * @dataProvider simpleNumberFieldsDataProvider
-     */
+    #[DataProvider('simpleNumberFieldsDataProvider')]
     public function simpleNumberFields(ApplicationTester $I, Example $testData): void
     {
         $this->runInputFieldTest($I, $testData);
diff --git a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicPasswordCest.php b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicPasswordCest.php
index 82fec3f50bf8458d1dc7bc5ffb73c4bcfc5e519a..20dd043a739d7aec0c2bd1cc7d07c33420378cce 100644
--- a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicPasswordCest.php
+++ b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsBasicPasswordCest.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Acceptance\Application\FormEngine;
 
+use Codeception\Attribute\DataProvider;
 use Codeception\Example;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree;
@@ -67,9 +68,7 @@ final class ElementsBasicPasswordCest extends AbstractElementsBasicCest
         ];
     }
 
-    /**
-     * @dataProvider passwordInputFieldsDataProvider
-     */
+    #[DataProvider('passwordInputFieldsDataProvider')]
     public function passwordInputFields(ApplicationTester $I, Example $testData): void
     {
         $this->runInputFieldTest($I, $testData);
diff --git a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsEmptyElementsCest.php b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsEmptyElementsCest.php
index 863a6a28f49e61261f4c9959f867e3e0bd278dd4..6a4b887786ec4f6bcbcf2b5b5b38e2c553fb6848 100644
--- a/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsEmptyElementsCest.php
+++ b/typo3/sysext/core/Tests/Acceptance/Application/FormEngine/ElementsEmptyElementsCest.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Acceptance\Application\FormEngine;
 
+use Codeception\Attribute\DataProvider;
 use Codeception\Example;
 use Facebook\WebDriver\WebDriverBy;
 use Facebook\WebDriver\WebDriverKeys;
@@ -142,9 +143,7 @@ final class ElementsEmptyElementsCest extends AbstractElementsBasicCest
         ];
     }
 
-    /**
-     * @dataProvider simpleRadioFieldsDataProvider
-     */
+    #[DataProvider('simpleRadioFieldsDataProvider')]
     public function simpleRadioFields(ApplicationTester $I, Example $testData): void
     {
         $this->runRadioFieldTest($I, $testData);
diff --git a/typo3/sysext/core/Tests/Acceptance/Application/Frontend/SitemapXmlCest.php b/typo3/sysext/core/Tests/Acceptance/Application/Frontend/SitemapXmlCest.php
index 714e91d18f75665f7e2accca56970492731eee00..4516dd63d2fe79d249f14bcab4cc6462f173820f 100644
--- a/typo3/sysext/core/Tests/Acceptance/Application/Frontend/SitemapXmlCest.php
+++ b/typo3/sysext/core/Tests/Acceptance/Application/Frontend/SitemapXmlCest.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Acceptance\Application\Frontend;
 
+use Codeception\Attribute\DataProvider;
 use Codeception\Example;
 use Facebook\WebDriver\Remote\RemoteWebDriver;
 use Facebook\WebDriver\Remote\RemoteWebElement;
@@ -72,9 +73,7 @@ final class SitemapXmlCest
         ];
     }
 
-    /**
-     * @dataProvider sitemapDataProvider
-     */
+    #[DataProvider('sitemapDataProvider')]
     public function seeSitemapXml(ApplicationTester $I, Example $testData): void
     {
         $I->see('TYPO3 XML Sitemap');
diff --git a/typo3/sysext/core/Tests/Acceptance/Application/Info/InfoModuleCest.php b/typo3/sysext/core/Tests/Acceptance/Application/Info/InfoModuleCest.php
index 91db5a19262d92c4594a1013a188454d3db9f04c..fade0e63e43af2075183498bff0788fe42768bd2 100644
--- a/typo3/sysext/core/Tests/Acceptance/Application/Info/InfoModuleCest.php
+++ b/typo3/sysext/core/Tests/Acceptance/Application/Info/InfoModuleCest.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Acceptance\Application\Info;
 
+use Codeception\Attribute\DataProvider;
 use Codeception\Example;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\PageTree;
@@ -42,9 +43,7 @@ final class InfoModuleCest
         ];
     }
 
-    /**
-     * @dataProvider infoMenuDataProvider
-     */
+    #[DataProvider('infoMenuDataProvider')]
     public function seeInfoSubModules(ApplicationTester $I, Example $exampleData): void
     {
         $I->amGoingTo('select ' . $exampleData['option'] . ' in dropdown');
diff --git a/typo3/sysext/core/Tests/Acceptance/Application/InstallTool/EnvironmentCest.php b/typo3/sysext/core/Tests/Acceptance/Application/InstallTool/EnvironmentCest.php
index 2dd20f4c78384010eece9a1c7a4ada5afab27beb..9744dd267995cb1ac60aafc08b49115f7b1b9def 100644
--- a/typo3/sysext/core/Tests/Acceptance/Application/InstallTool/EnvironmentCest.php
+++ b/typo3/sysext/core/Tests/Acceptance/Application/InstallTool/EnvironmentCest.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Acceptance\Application\InstallTool;
 
+use Codeception\Attribute\DataProvider;
 use Codeception\Example;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\Helper\ModalDialog;
@@ -45,9 +46,7 @@ final class EnvironmentCest extends AbstractCest
         ];
     }
 
-    /**
-     * @dataProvider cardsDataProvider
-     */
+    #[DataProvider('cardsDataProvider')]
     public function seeCardsAndModals(ApplicationTester $I, ModalDialog $modalDialog, Example $testData): void
     {
         $I->see($testData['title']);
diff --git a/typo3/sysext/core/Tests/Acceptance/Application/Redirect/RedirectModuleCest.php b/typo3/sysext/core/Tests/Acceptance/Application/Redirect/RedirectModuleCest.php
index f4f6be6e332696c1ec88b009bc232d64e8922fc2..b219db8a3dc7c76b09a988058b60824773c01e8c 100644
--- a/typo3/sysext/core/Tests/Acceptance/Application/Redirect/RedirectModuleCest.php
+++ b/typo3/sysext/core/Tests/Acceptance/Application/Redirect/RedirectModuleCest.php
@@ -17,6 +17,7 @@ declare(strict_types=1);
 
 namespace TYPO3\CMS\Core\Tests\Acceptance\Application\Redirect;
 
+use Codeception\Attribute\DataProvider;
 use Codeception\Example;
 use TYPO3\CMS\Core\Tests\Acceptance\Support\ApplicationTester;
 
@@ -89,9 +90,7 @@ final class RedirectModuleCest
         ];
     }
 
-    /**
-     * @dataProvider possibleRedirectStatusCodes
-     */
+    #[DataProvider('possibleRedirectStatusCodes')]
     public function seeStatusCodesWhenCreatingNewRedirect(ApplicationTester $I, Example $example): void
     {
         $I->amGoingTo('Create a redirect and see the different status codes');
diff --git a/typo3/sysext/frontend/Classes/ContentObject/FileLinkHookInterface.php b/typo3/sysext/frontend/Classes/ContentObject/FileLinkHookInterface.php
index 80dcf3e9d6f1a11514589df5150e2acbd0cd028e..653435ea56097bc9ef3c397867494f258226e2e7 100644
--- a/typo3/sysext/frontend/Classes/ContentObject/FileLinkHookInterface.php
+++ b/typo3/sysext/frontend/Classes/ContentObject/FileLinkHookInterface.php
@@ -26,7 +26,6 @@ interface FileLinkHookInterface
      * Finds alternative previewImage for given File.
      *
      * @return File
-     * @abstract
      */
     public function getPreviewImage(File $file);
 }