diff --git a/Build/Scripts/annotationChecker.php b/Build/Scripts/annotationChecker.php
index c4d5ec073f5d06ad3daabfcf2c74b15273e1e870..af44c61628eb853c93072ed05f984ca7bc816fa8 100755
--- a/Build/Scripts/annotationChecker.php
+++ b/Build/Scripts/annotationChecker.php
@@ -75,6 +75,8 @@ class NodeVisitor extends NodeVisitorAbstract
                     'extensionScannerIgnoreFile', 'extensionScannerIgnoreLine',
                     // static code analysis
                     'template', 'implements', 'extends',
+                    // phpstan specific annotations
+                    'phpstan-var', 'phpstan-param', 'phpstan-return',
                 ];
                 // allow annotation only on class level
                 if (get_class($node) === Node\Stmt\Class_::class) {
diff --git a/Build/phpstan/phpstan-baseline.neon b/Build/phpstan/phpstan-baseline.neon
index 91942ae5d61b2a5881fa533bde78b725765a700e..96efba98f5abb07a0b90085c1b267de70b7b4c2c 100644
--- a/Build/phpstan/phpstan-baseline.neon
+++ b/Build/phpstan/phpstan-baseline.neon
@@ -501,12 +501,12 @@ parameters:
 			path: ../../typo3/sysext/beuser/Classes/Controller/PermissionController.php
 
 		-
-			message: "#^Offset 'tables_modify' on array\\{tables_select\\: array\\<string, mixed\\>, tables_modify\\: array\\<string, mixed\\>\\} on left side of \\?\\? always exists and is not nullable\\.$#"
+			message: "#^Offset 'tables_modify' on array\\{tables_select\\: array\\<non\\-empty\\-string, mixed\\>, tables_modify\\: array\\<non\\-empty\\-string, mixed\\>\\} on left side of \\?\\? always exists and is not nullable\\.$#"
 			count: 1
 			path: ../../typo3/sysext/beuser/Classes/Service/UserInformationService.php
 
 		-
-			message: "#^Offset 'tables_select' on array\\{tables_select\\: array\\<string, mixed\\>, tables_modify\\: array\\<string, mixed\\>\\} on left side of \\?\\? always exists and is not nullable\\.$#"
+			message: "#^Offset 'tables_select' on array\\{tables_select\\: array\\<non\\-empty\\-string, mixed\\>, tables_modify\\: array\\<non\\-empty\\-string, mixed\\>\\} on left side of \\?\\? always exists and is not nullable\\.$#"
 			count: 1
 			path: ../../typo3/sysext/beuser/Classes/Service/UserInformationService.php
 
diff --git a/typo3/sysext/core/Classes/Utility/GeneralUtility.php b/typo3/sysext/core/Classes/Utility/GeneralUtility.php
index bc11be9c7faa15a613785c8e2868857432d80c2e..7fce932a0e687f9b1738be54a70bc3250425a66d 100644
--- a/typo3/sysext/core/Classes/Utility/GeneralUtility.php
+++ b/typo3/sysext/core/Classes/Utility/GeneralUtility.php
@@ -1001,6 +1001,7 @@ class GeneralUtility
      *                   the last element containing the rest of string. If the limit parameter is negative, all components
      *                   except the last -limit are returned.
      * @return list<string> Exploded values
+     * @phpstan-return ($removeEmptyValues is true ? list<non-empty-string> : list<string>) Exploded values
      */
     public static function trimExplode($delim, $string, $removeEmptyValues = false, $limit = 0): array
     {