diff --git a/core/core.services.yml b/core/core.services.yml
index 20b8651..dce3949 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -431,29 +431,29 @@ services:
   access_check.default:
     class: Drupal\Core\Access\DefaultAccessCheck
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access }
   access_check.entity:
     class: Drupal\Core\Entity\EntityAccessCheck
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _entity_access }
   access_check.entity_create:
     class: Drupal\Core\Entity\EntityCreateAccessCheck
     arguments: ['@entity.manager']
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _entity_create_access }
   access_check.theme:
     class: Drupal\Core\Theme\ThemeAccessCheck
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_theme }
   access_check.custom:
     class: Drupal\Core\Access\CustomAccessCheck
     arguments: ['@controller_resolver']
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _custom_access }
   access_check.csrf:
     class: Drupal\Core\Access\CsrfAccessCheck
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _csrf_token }
     arguments: ['@csrf_token']
   maintenance_mode_subscriber:
     class: Drupal\Core\EventSubscriber\MaintenanceModeSubscriber
diff --git a/core/lib/Drupal/Core/Access/AccessManager.php b/core/lib/Drupal/Core/Access/AccessManager.php
index 62ab2d6..6b525b0 100644
--- a/core/lib/Drupal/Core/Access/AccessManager.php
+++ b/core/lib/Drupal/Core/Access/AccessManager.php
@@ -16,7 +16,6 @@
 use Symfony\Component\Routing\Route;
 use Symfony\Component\DependencyInjection\ContainerAware;
 use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
 use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
 use Symfony\Component\Routing\Exception\RouteNotFoundException;
 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
@@ -118,9 +117,14 @@ public function setRequest(Request $request) {
    *
    * @param string $service_id
    *   The ID of the service in the Container that provides a check.
+   * @param array $applies_checks
+   *   (optional) An array of static checks for a route to apply to.
    */
-  public function addCheckService($service_id) {
+  public function addCheckService($service_id, array $applies_checks = array()) {
     $this->checkIds[] = $service_id;
+    foreach ($applies_checks as $applies_check) {
+      $this->staticRequirementMap[$applies_check][] = $service_id;
+    }
   }
 
   /**
@@ -328,12 +332,11 @@ protected function loadCheck($service_id) {
    * Compiles a mapping of requirement keys to access checker service IDs.
    */
   public function loadAccessRequirementMap() {
-    if (isset($this->staticRequirementMap, $this->dynamicRequirementMap)) {
+    if (isset($this->dynamicRequirementMap)) {
       return;
     }
 
     // Set them here, so we can use the isset() check above.
-    $this->staticRequirementMap = array();
     $this->dynamicRequirementMap = array();
 
     foreach ($this->checkIds as $service_id) {
@@ -341,14 +344,8 @@ public function loadAccessRequirementMap() {
         $this->loadCheck($service_id);
       }
 
-      // Empty arrays will not register anything.
-      if (is_subclass_of($this->checks[$service_id], 'Drupal\Core\Access\StaticAccessCheckInterface')) {
-        foreach ((array) $this->checks[$service_id]->appliesTo() as $key) {
-          $this->staticRequirementMap[$key][] = $service_id;
-        }
-      }
-      // Add the service ID to a the regular that will be iterated over.
-      else {
+      // Add the service ID to an array that will be iterated over.
+      if ($this->checks[$service_id] instanceof AccessCheckInterface) {
         $this->dynamicRequirementMap[] = $service_id;
       }
     }
diff --git a/core/lib/Drupal/Core/Access/CsrfAccessCheck.php b/core/lib/Drupal/Core/Access/CsrfAccessCheck.php
index 98be68c..9744d6c 100644
--- a/core/lib/Drupal/Core/Access/CsrfAccessCheck.php
+++ b/core/lib/Drupal/Core/Access/CsrfAccessCheck.php
@@ -7,8 +7,8 @@
 
 namespace Drupal\Core\Access;
 
-use Drupal\Core\Access\CsrfTokenGenerator;
 use Drupal\Core\Session\AccountInterface;
+use Drupal\Core\Routing\Access\AccessInterface as RoutingAccessInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
 
@@ -19,7 +19,7 @@
  * a token generated by \Drupal::csrfToken()->get() using the same value as the
  * "_csrf_token" parameter in the route.
  */
-class CsrfAccessCheck implements StaticAccessCheckInterface {
+class CsrfAccessCheck implements RoutingAccessInterface {
 
   /**
    * The CSRF token generator.
@@ -41,13 +41,6 @@ function __construct(CsrfTokenGenerator $csrf_token) {
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array('_csrf_token');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     // If this is the controller request, check CSRF access as normal.
     if ($request->attributes->get('_controller_request')) {
diff --git a/core/lib/Drupal/Core/Access/CustomAccessCheck.php b/core/lib/Drupal/Core/Access/CustomAccessCheck.php
index 20f0ead..c116e66 100644
--- a/core/lib/Drupal/Core/Access/CustomAccessCheck.php
+++ b/core/lib/Drupal/Core/Access/CustomAccessCheck.php
@@ -8,6 +8,7 @@
 namespace Drupal\Core\Access;
 
 use Drupal\Core\Controller\ControllerResolverInterface;
+use Drupal\Core\Routing\Access\AccessInterface as RoutingAccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
@@ -22,7 +23,7 @@
  * cannot reuse any stored property of your actual controller instance used
  * to generate the output.
  */
-class CustomAccessCheck implements StaticAccessCheckInterface {
+class CustomAccessCheck implements RoutingAccessInterface {
 
   /**
    * The controller resolver.
@@ -44,13 +45,6 @@ public function __construct(ControllerResolverInterface $controller_resolver) {
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array('_custom_access');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     $access_controller = $route->getRequirement('_custom_access');
 
diff --git a/core/lib/Drupal/Core/Access/DefaultAccessCheck.php b/core/lib/Drupal/Core/Access/DefaultAccessCheck.php
index 123fc5d..dc26067 100644
--- a/core/lib/Drupal/Core/Access/DefaultAccessCheck.php
+++ b/core/lib/Drupal/Core/Access/DefaultAccessCheck.php
@@ -8,20 +8,14 @@
 namespace Drupal\Core\Access;
 
 use Drupal\Core\Session\AccountInterface;
+use Drupal\Core\Routing\Access\AccessInterface as RoutingAccessInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
 
 /**
  * Allows access to routes to be controlled by an '_access' boolean parameter.
  */
-class DefaultAccessCheck implements StaticAccessCheckInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function appliesTo() {
-    return array('_access');
-  }
+class DefaultAccessCheck implements RoutingAccessInterface {
 
   /**
    * {@inheritdoc}
diff --git a/core/lib/Drupal/Core/Access/StaticAccessCheckInterface.php b/core/lib/Drupal/Core/Access/StaticAccessCheckInterface.php
deleted file mode 100644
index c01b719..0000000
--- a/core/lib/Drupal/Core/Access/StaticAccessCheckInterface.php
+++ /dev/null
@@ -1,34 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Core\Access\StaticAccessCheckInterface.
- */
-
-namespace Drupal\Core\Access;
-
-use Drupal\Core\Routing\Access\AccessInterface as RoutingAccessInterface;
-
-/**
- * An access check service determines access rules for particular routes.
- *
- * This interface is specifically for routes that know exactly which requirement
- * keys they should react to for a route.
- */
-interface StaticAccessCheckInterface extends RoutingAccessInterface {
-
-  /**
-   * Declares the route requirement keys this access checker applies to.
-   *
-   * This should be used when the requirement matching for a route is static,
-   * and does not require any further information. For example, '_access' will
-   * provide TRUE, or FALSE. We do not need any more information other than the
-   * route provides this requirement key.
-   *
-   * @return array
-   *   An array of route requirement keys this access checker applies to. An
-   *   empty array will check all routes using the apply method.
-   */
-  public function appliesTo();
-
-}
diff --git a/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterAccessChecksPass.php b/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterAccessChecksPass.php
index 9e6506d..c83bcbc 100644
--- a/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterAccessChecksPass.php
+++ b/core/lib/Drupal/Core/DependencyInjection/Compiler/RegisterAccessChecksPass.php
@@ -26,7 +26,13 @@ public function process(ContainerBuilder $container) {
     }
     $access_manager = $container->getDefinition('access_manager');
     foreach ($container->findTaggedServiceIds('access_check') as $id => $attributes) {
-      $access_manager->addMethodCall('addCheckService', array($id));
+      $applies = array();
+      foreach ($attributes as $attribute) {
+        if (isset($attribute['applies_to'])) {
+          $applies[] = $attribute['applies_to'];
+        }
+      }
+      $access_manager->addMethodCall('addCheckService', array($id, array_unique($applies)));
     }
   }
 }
diff --git a/core/lib/Drupal/Core/Entity/EntityAccessCheck.php b/core/lib/Drupal/Core/Entity/EntityAccessCheck.php
index 06ad0b7..1e3b0ae 100644
--- a/core/lib/Drupal/Core/Entity/EntityAccessCheck.php
+++ b/core/lib/Drupal/Core/Entity/EntityAccessCheck.php
@@ -7,23 +7,15 @@
 
 namespace Drupal\Core\Entity;
 
-use Drupal\Core\Entity\EntityInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
-use Drupal\Core\Access\StaticAccessCheckInterface;
 
 /**
  * Provides a generic access checker for entities.
  */
-class EntityAccessCheck implements StaticAccessCheckInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function appliesTo() {
-    return array('_entity_access');
-  }
+class EntityAccessCheck implements AccessInterface {
 
   /**
    * Implements \Drupal\Core\Access\AccessCheckInterface::access().
diff --git a/core/lib/Drupal/Core/Entity/EntityCreateAccessCheck.php b/core/lib/Drupal/Core/Entity/EntityCreateAccessCheck.php
index e3268bf..1cf7d87 100644
--- a/core/lib/Drupal/Core/Entity/EntityCreateAccessCheck.php
+++ b/core/lib/Drupal/Core/Entity/EntityCreateAccessCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\Core\Entity;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
@@ -15,7 +15,7 @@
 /**
  * Defines an access checker for entity creation.
  */
-class EntityCreateAccessCheck implements StaticAccessCheckInterface {
+class EntityCreateAccessCheck implements AccessInterface {
 
   /**
    * The entity manager.
@@ -44,13 +44,6 @@ public function __construct(EntityManagerInterface $entity_manager) {
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array($this->requirementsKey);
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     list($entity_type, $bundle) = explode(':', $route->getRequirement($this->requirementsKey) . ':');
 
diff --git a/core/lib/Drupal/Core/Theme/ThemeAccessCheck.php b/core/lib/Drupal/Core/Theme/ThemeAccessCheck.php
index 7da53ef..75afddc 100644
--- a/core/lib/Drupal/Core/Theme/ThemeAccessCheck.php
+++ b/core/lib/Drupal/Core/Theme/ThemeAccessCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\Core\Theme;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
@@ -15,14 +15,7 @@
 /**
  * Access check for a theme.
  */
-class ThemeAccessCheck implements StaticAccessCheckInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function appliesTo() {
-    return array('_access_theme');
-  }
+class ThemeAccessCheck implements AccessInterface {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/aggregator/aggregator.services.yml b/core/modules/aggregator/aggregator.services.yml
index f622f27..c00b2ac 100644
--- a/core/modules/aggregator/aggregator.services.yml
+++ b/core/modules/aggregator/aggregator.services.yml
@@ -12,7 +12,7 @@ services:
     class: Drupal\aggregator\Access\CategoriesAccessCheck
     arguments: ['@database']
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_aggregator_categories }
   aggregator.category.storage:
     class: Drupal\aggregator\CategoryStorageController
     arguments: ['@database']
diff --git a/core/modules/aggregator/lib/Drupal/aggregator/Access/CategoriesAccessCheck.php b/core/modules/aggregator/lib/Drupal/aggregator/Access/CategoriesAccessCheck.php
index 6a6a9a5..791eddd 100644
--- a/core/modules/aggregator/lib/Drupal/aggregator/Access/CategoriesAccessCheck.php
+++ b/core/modules/aggregator/lib/Drupal/aggregator/Access/CategoriesAccessCheck.php
@@ -7,8 +7,8 @@
 
 namespace Drupal\aggregator\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
 use Drupal\Core\Database\Connection;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
@@ -16,7 +16,7 @@
 /**
  * Provides an access check for aggregator categories routes.
  */
-class CategoriesAccessCheck implements StaticAccessCheckInterface {
+class CategoriesAccessCheck implements AccessInterface {
 
   /**
    * The database connection.
@@ -38,13 +38,6 @@ public function __construct(Connection $database) {
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array('_access_aggregator_categories');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     return $account->hasPermission('access news feeds') && (bool) $this->database->queryRange('SELECT 1 FROM {aggregator_category}', 0, 1)->fetchField() ? static::ALLOW : static::DENY;
   }
diff --git a/core/modules/book/book.services.yml b/core/modules/book/book.services.yml
index fa7c66c..daa995a 100644
--- a/core/modules/book/book.services.yml
+++ b/core/modules/book/book.services.yml
@@ -15,4 +15,4 @@ services:
     class: Drupal\book\Access\BookNodeIsRemovableAccessCheck
     arguments: ['@book.manager']
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_book_removable }
diff --git a/core/modules/book/lib/Drupal/book/Access/BookNodeIsRemovableAccessCheck.php b/core/modules/book/lib/Drupal/book/Access/BookNodeIsRemovableAccessCheck.php
index c80ae27..7b12219 100644
--- a/core/modules/book/lib/Drupal/book/Access/BookNodeIsRemovableAccessCheck.php
+++ b/core/modules/book/lib/Drupal/book/Access/BookNodeIsRemovableAccessCheck.php
@@ -8,7 +8,7 @@
 namespace Drupal\book\Access;
 
 use Drupal\book\BookManager;
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -16,7 +16,7 @@
 /**
  * Determines whether the requested node can be removed from its book.
  */
-class BookNodeIsRemovableAccessCheck implements StaticAccessCheckInterface {
+class BookNodeIsRemovableAccessCheck implements AccessInterface {
 
   /**
    * Book Manager Service.
@@ -38,13 +38,6 @@ public function __construct(BookManager $book_manager) {
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array('_access_book_removable');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     $node = $request->attributes->get('node');
     if (!empty($node)) {
diff --git a/core/modules/config_translation/config_translation.services.yml b/core/modules/config_translation/config_translation.services.yml
index f30e569..19d5c62 100644
--- a/core/modules/config_translation/config_translation.services.yml
+++ b/core/modules/config_translation/config_translation.services.yml
@@ -9,13 +9,13 @@ services:
     class: Drupal\config_translation\Access\ConfigTranslationOverviewAccess
     arguments: ['@plugin.manager.config_translation.mapper']
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _config_translation_overview_access }
 
   config_translation.access.form:
     class: Drupal\config_translation\Access\ConfigTranslationFormAccess
     arguments: ['@plugin.manager.config_translation.mapper']
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _config_translation_form_access }
 
   plugin.manager.config_translation.mapper:
     class: Drupal\config_translation\ConfigMapperManager
diff --git a/core/modules/config_translation/lib/Drupal/config_translation/Access/ConfigTranslationFormAccess.php b/core/modules/config_translation/lib/Drupal/config_translation/Access/ConfigTranslationFormAccess.php
index 5e98d41..10c5f25 100644
--- a/core/modules/config_translation/lib/Drupal/config_translation/Access/ConfigTranslationFormAccess.php
+++ b/core/modules/config_translation/lib/Drupal/config_translation/Access/ConfigTranslationFormAccess.php
@@ -19,13 +19,6 @@ class ConfigTranslationFormAccess extends ConfigTranslationOverviewAccess {
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array('_config_translation_form_access');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     // For the translation forms we have a target language, so we need some
     // checks in addition to the checks performed for the translation overview.
diff --git a/core/modules/config_translation/lib/Drupal/config_translation/Access/ConfigTranslationOverviewAccess.php b/core/modules/config_translation/lib/Drupal/config_translation/Access/ConfigTranslationOverviewAccess.php
index 73c6ab0..1834416 100644
--- a/core/modules/config_translation/lib/Drupal/config_translation/Access/ConfigTranslationOverviewAccess.php
+++ b/core/modules/config_translation/lib/Drupal/config_translation/Access/ConfigTranslationOverviewAccess.php
@@ -8,7 +8,7 @@
 namespace Drupal\config_translation\Access;
 
 use Drupal\config_translation\ConfigMapperManagerInterface;
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
@@ -16,7 +16,7 @@
 /**
  * Checks access for displaying the configuration translation overview.
  */
-class ConfigTranslationOverviewAccess implements StaticAccessCheckInterface {
+class ConfigTranslationOverviewAccess implements AccessInterface {
 
   /**
    * The mapper plugin discovery service.
@@ -45,13 +45,6 @@ public function __construct(ConfigMapperManagerInterface $config_mapper_manager)
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array('_config_translation_overview_access');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     /** @var \Drupal\config_translation\ConfigMapperInterface $mapper */
     $mapper = $this->configMapperManager->createInstance($route->getDefault('plugin_id'));
diff --git a/core/modules/contact/contact.services.yml b/core/modules/contact/contact.services.yml
index cccd1fd..acb2866 100644
--- a/core/modules/contact/contact.services.yml
+++ b/core/modules/contact/contact.services.yml
@@ -2,5 +2,5 @@ services:
   access_check.contact_personal:
     class: Drupal\contact\Access\ContactPageAccess
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_contact_personal_tab }
     arguments: ['@config.factory', '@user.data']
diff --git a/core/modules/contact/lib/Drupal/contact/Access/ContactPageAccess.php b/core/modules/contact/lib/Drupal/contact/Access/ContactPageAccess.php
index 182cc1a..c8d0ed9 100644
--- a/core/modules/contact/lib/Drupal/contact/Access/ContactPageAccess.php
+++ b/core/modules/contact/lib/Drupal/contact/Access/ContactPageAccess.php
@@ -7,8 +7,8 @@
 
 namespace Drupal\contact\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
 use Drupal\Core\Config\ConfigFactory;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\user\UserDataInterface;
 use Symfony\Component\Routing\Route;
@@ -17,7 +17,7 @@
 /**
  * Access check for contact_personal_page route.
  */
-class ContactPageAccess implements StaticAccessCheckInterface {
+class ContactPageAccess implements AccessInterface {
 
   /**
    * The contact settings config object.
@@ -49,13 +49,6 @@ public function __construct(ConfigFactory $config_factory, UserDataInterface $us
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array('_access_contact_personal_tab');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     $contact_account = $request->attributes->get('user');
 
diff --git a/core/modules/content_translation/content_translation.services.yml b/core/modules/content_translation/content_translation.services.yml
index 73ad8ea..183547d 100644
--- a/core/modules/content_translation/content_translation.services.yml
+++ b/core/modules/content_translation/content_translation.services.yml
@@ -13,13 +13,13 @@ services:
     class: Drupal\content_translation\Access\ContentTranslationOverviewAccess
     arguments: ['@plugin.manager.entity']
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_content_translation_overview }
 
   content_translation.manage_access:
     class: Drupal\content_translation\Access\ContentTranslationManageAccessCheck
     arguments: ['@plugin.manager.entity']
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_content_translation_manage }
 
   content_translation.manager:
     class: Drupal\content_translation\ContentTranslationManager
diff --git a/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationManageAccessCheck.php b/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationManageAccessCheck.php
index 16cc31a..6c8a617 100644
--- a/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationManageAccessCheck.php
+++ b/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationManageAccessCheck.php
@@ -7,9 +7,9 @@
 
 namespace Drupal\content_translation\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
 use Drupal\Core\Language\Language;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -17,7 +17,7 @@
 /**
  * Access check for entity translation CRUD operation.
  */
-class ContentTranslationManageAccessCheck implements StaticAccessCheckInterface {
+class ContentTranslationManageAccessCheck implements AccessInterface {
 
   /**
    * The entity type manager.
@@ -39,13 +39,6 @@ public function __construct(EntityManagerInterface $manager) {
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array('_access_content_translation_manage');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     $entity_type = $request->attributes->get('_entity_type');
     if ($entity = $request->attributes->get($entity_type)) {
diff --git a/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationOverviewAccess.php b/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationOverviewAccess.php
index 5086e79..53a6b4d 100644
--- a/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationOverviewAccess.php
+++ b/core/modules/content_translation/lib/Drupal/content_translation/Access/ContentTranslationOverviewAccess.php
@@ -7,8 +7,8 @@
 
 namespace Drupal\content_translation\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -16,7 +16,7 @@
 /**
  * Access check for entity translation overview.
  */
-class ContentTranslationOverviewAccess implements StaticAccessCheckInterface {
+class ContentTranslationOverviewAccess implements AccessInterface {
 
   /**
    * The entity type manager.
@@ -38,13 +38,6 @@ public function __construct(EntityManagerInterface $manager) {
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array('_access_content_translation_overview');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     $entity_type = $request->attributes->get('_entity_type');
     if ($entity = $request->attributes->get($entity_type)) {
diff --git a/core/modules/edit/edit.services.yml b/core/modules/edit/edit.services.yml
index d71a196..f3b3d1f 100644
--- a/core/modules/edit/edit.services.yml
+++ b/core/modules/edit/edit.services.yml
@@ -6,12 +6,12 @@ services:
     class: Drupal\edit\Access\EditEntityFieldAccessCheck
     arguments: ['@entity.manager', '@field.info']
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_edit_entity_field }
   access_check.edit.entity:
     class: Drupal\edit\Access\EditEntityAccessCheck
     arguments: ['@entity.manager']
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_edit_entity }
   edit.editor.selector:
     class: Drupal\edit\EditorSelector
     arguments: ['@plugin.manager.edit.editor', '@plugin.manager.field.formatter']
diff --git a/core/modules/edit/lib/Drupal/edit/Access/EditEntityAccessCheck.php b/core/modules/edit/lib/Drupal/edit/Access/EditEntityAccessCheck.php
index 07faf6e..827c06f 100644
--- a/core/modules/edit/lib/Drupal/edit/Access/EditEntityAccessCheck.php
+++ b/core/modules/edit/lib/Drupal/edit/Access/EditEntityAccessCheck.php
@@ -7,8 +7,8 @@
 
 namespace Drupal\edit\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -18,7 +18,7 @@
 /**
  * Access check for editing entities.
  */
-class EditEntityAccessCheck implements StaticAccessCheckInterface {
+class EditEntityAccessCheck implements AccessInterface {
 
   /**
    * The entity manager.
@@ -40,14 +40,6 @@ public function __construct(EntityManagerInterface $entity_manager) {
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    // @see edit.routing.yml
-    return array('_access_edit_entity');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     // @todo Request argument validation and object loading should happen
     //   elsewhere in the request processing pipeline:
diff --git a/core/modules/edit/lib/Drupal/edit/Access/EditEntityFieldAccessCheck.php b/core/modules/edit/lib/Drupal/edit/Access/EditEntityFieldAccessCheck.php
index 413e9aa..add94fa 100644
--- a/core/modules/edit/lib/Drupal/edit/Access/EditEntityFieldAccessCheck.php
+++ b/core/modules/edit/lib/Drupal/edit/Access/EditEntityFieldAccessCheck.php
@@ -7,9 +7,8 @@
 
 namespace Drupal\edit\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
-use Drupal\edit\Access\EditEntityFieldAccessCheckInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -20,7 +19,7 @@
 /**
  * Access check for editing entity fields.
  */
-class EditEntityFieldAccessCheck implements StaticAccessCheckInterface, EditEntityFieldAccessCheckInterface {
+class EditEntityFieldAccessCheck implements AccessInterface, EditEntityFieldAccessCheckInterface {
 
   /**
    * The entity manager.
@@ -52,13 +51,6 @@ public function __construct(EntityManagerInterface $entity_manager, FieldInfo $f
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array('_access_edit_entity_field');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     // @todo Request argument validation and object loading should happen
     //   elsewhere in the request processing pipeline:
diff --git a/core/modules/edit/tests/Drupal/edit/Tests/Access/EditEntityAccessCheckTest.php b/core/modules/edit/tests/Drupal/edit/Tests/Access/EditEntityAccessCheckTest.php
index c42ae9a..0d5ca57 100644
--- a/core/modules/edit/tests/Drupal/edit/Tests/Access/EditEntityAccessCheckTest.php
+++ b/core/modules/edit/tests/Drupal/edit/Tests/Access/EditEntityAccessCheckTest.php
@@ -66,13 +66,6 @@ protected function setUp() {
   }
 
   /**
-   * Tests the appliesTo method for the access checker.
-   */
-  public function testAppliesTo() {
-    $this->assertEquals($this->editAccessCheck->appliesTo(), array('_access_edit_entity'), 'Access checker returned the expected appliesTo() array.');
-  }
-
-  /**
    * Provides test data for testAccess().
    *
    * @see \Drupal\edit\Tests\edit\Access\EditEntityAccessCheckTest::testAccess()
diff --git a/core/modules/edit/tests/Drupal/edit/Tests/Access/EditEntityFieldAccessCheckTest.php b/core/modules/edit/tests/Drupal/edit/Tests/Access/EditEntityFieldAccessCheckTest.php
index 228b4b0..06ac73a 100644
--- a/core/modules/edit/tests/Drupal/edit/Tests/Access/EditEntityFieldAccessCheckTest.php
+++ b/core/modules/edit/tests/Drupal/edit/Tests/Access/EditEntityFieldAccessCheckTest.php
@@ -79,13 +79,6 @@ protected function setUp() {
   }
 
   /**
-   * Tests the appliesTo method for the access checker.
-   */
-  public function testAppliesTo() {
-    $this->assertEquals($this->editAccessCheck->appliesTo(), array('_access_edit_entity_field'), 'Access checker returned the expected appliesTo() array.');
-  }
-
-  /**
    * Provides test data for testAccess().
    *
    * @see \Drupal\edit\Tests\edit\Access\EditEntityFieldAccessCheckTest::testAccess()
diff --git a/core/modules/field_ui/field_ui.services.yml b/core/modules/field_ui/field_ui.services.yml
index 10752b0..26bf136 100644
--- a/core/modules/field_ui/field_ui.services.yml
+++ b/core/modules/field_ui/field_ui.services.yml
@@ -8,9 +8,9 @@ services:
     class: Drupal\field_ui\Access\ViewModeAccessCheck
     arguments: ['@entity.manager']
     tags:
-     - { name: access_check }
+     - { name: access_check, applies_to: _field_ui_view_mode_access }
   access_check.field_ui.form_mode:
     class: Drupal\field_ui\Access\FormModeAccessCheck
     arguments: ['@entity.manager']
     tags:
-     - { name: access_check }
+     - { name: access_check, applies_to: _field_ui_form_mode_access }
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Access/FormModeAccessCheck.php b/core/modules/field_ui/lib/Drupal/field_ui/Access/FormModeAccessCheck.php
index 3322c9e..ae010f1 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/Access/FormModeAccessCheck.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/Access/FormModeAccessCheck.php
@@ -7,8 +7,8 @@
 
 namespace Drupal\field_ui\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -16,7 +16,7 @@
 /**
  * Allows access to routes to be controlled by an '_access' boolean parameter.
  */
-class FormModeAccessCheck implements StaticAccessCheckInterface {
+class FormModeAccessCheck implements AccessInterface {
 
   /**
    * The entity manager.
@@ -38,13 +38,6 @@ public function __construct(EntityManagerInterface $entity_manager) {
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array('_field_ui_form_mode_access');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     if ($entity_type = $request->attributes->get('entity_type')) {
       $form_mode = $request->attributes->get('form_mode_name');
diff --git a/core/modules/field_ui/lib/Drupal/field_ui/Access/ViewModeAccessCheck.php b/core/modules/field_ui/lib/Drupal/field_ui/Access/ViewModeAccessCheck.php
index 5e69daf..326373e 100644
--- a/core/modules/field_ui/lib/Drupal/field_ui/Access/ViewModeAccessCheck.php
+++ b/core/modules/field_ui/lib/Drupal/field_ui/Access/ViewModeAccessCheck.php
@@ -7,8 +7,8 @@
 
 namespace Drupal\field_ui\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
 use Drupal\Core\Entity\EntityManagerInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -16,7 +16,7 @@
 /**
  * Allows access to routes to be controlled by an '_access' boolean parameter.
  */
-class ViewModeAccessCheck implements StaticAccessCheckInterface {
+class ViewModeAccessCheck implements AccessInterface {
 
   /**
    * The entity manager.
@@ -38,13 +38,6 @@ public function __construct(EntityManagerInterface $entity_manager) {
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array('_field_ui_view_mode_access');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     if ($entity_type = $request->attributes->get('entity_type')) {
       $view_mode = $request->attributes->get('view_mode_name');
diff --git a/core/modules/filter/filter.services.yml b/core/modules/filter/filter.services.yml
index 91bc91f..c355c0c 100644
--- a/core/modules/filter/filter.services.yml
+++ b/core/modules/filter/filter.services.yml
@@ -9,7 +9,7 @@ services:
   access_check.filter_disable:
     class: Drupal\filter\Access\FormatDisableCheck
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _filter_disable_format_access }
   plugin.manager.filter:
     class: Drupal\filter\FilterPluginManager
     parent: default_plugin_manager
diff --git a/core/modules/filter/lib/Drupal/filter/Access/FormatDisableCheck.php b/core/modules/filter/lib/Drupal/filter/Access/FormatDisableCheck.php
index d78c103..c039fba 100644
--- a/core/modules/filter/lib/Drupal/filter/Access/FormatDisableCheck.php
+++ b/core/modules/filter/lib/Drupal/filter/Access/FormatDisableCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\filter\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -15,14 +15,7 @@
 /**
  * Checks access for disabling text formats.
  */
-class FormatDisableCheck implements StaticAccessCheckInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function appliesTo() {
-    return array('_filter_disable_format_access');
-  }
+class FormatDisableCheck implements AccessInterface {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/node/lib/Drupal/node/Access/NodeAddAccessCheck.php b/core/modules/node/lib/Drupal/node/Access/NodeAddAccessCheck.php
index f67232d..8d72223 100644
--- a/core/modules/node/lib/Drupal/node/Access/NodeAddAccessCheck.php
+++ b/core/modules/node/lib/Drupal/node/Access/NodeAddAccessCheck.php
@@ -7,7 +7,8 @@
 
 namespace Drupal\node\Access;
 
-use Drupal\Core\Entity\EntityCreateAccessCheck;
+use Drupal\Core\Entity\EntityManagerInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -15,12 +16,24 @@
 /**
  * Determines access to for node add pages.
  */
-class NodeAddAccessCheck extends EntityCreateAccessCheck {
+class NodeAddAccessCheck implements AccessInterface {
 
   /**
-   * {@inheritdoc}
+   * The entity manager.
+   *
+   * @var \Drupal\Core\Entity\EntityManagerInterface
    */
-  protected $requirementsKey = '_node_add_access';
+  protected $entityManager;
+
+  /**
+   * Constructs a EntityCreateAccessCheck object.
+   *
+   * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
+   *   The entity manager.
+   */
+  public function __construct(EntityManagerInterface $entity_manager) {
+    $this->entityManager = $entity_manager;
+  }
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/node/lib/Drupal/node/Access/NodeRevisionAccessCheck.php b/core/modules/node/lib/Drupal/node/Access/NodeRevisionAccessCheck.php
index 568c389..78ab74f 100644
--- a/core/modules/node/lib/Drupal/node/Access/NodeRevisionAccessCheck.php
+++ b/core/modules/node/lib/Drupal/node/Access/NodeRevisionAccessCheck.php
@@ -7,9 +7,9 @@
 
 namespace Drupal\node\Access;
 
-use Drupal\Core\Access\AccessCheckInterface;
 use Drupal\Core\Database\Connection;
 use Drupal\Core\Entity\EntityManagerInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\node\NodeInterface;
 use Symfony\Component\HttpFoundation\Request;
@@ -18,7 +18,7 @@
 /**
  * Provides an access checker for node revisions.
  */
-class NodeRevisionAccessCheck implements AccessCheckInterface {
+class NodeRevisionAccessCheck implements AccessInterface {
 
   /**
    * The node storage.
@@ -65,13 +65,6 @@ public function __construct(EntityManagerInterface $entity_manager, Connection $
   /**
    * {@inheritdoc}
    */
-  public function applies(Route $route) {
-    return array_key_exists('_access_node_revision', $route->getRequirements());
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     // If the route has a {node_revision} placeholder, load the node for that
     // revision. Otherwise, try to use a {node} placeholder.
diff --git a/core/modules/node/node.services.yml b/core/modules/node/node.services.yml
index 0b839a5..a2ba840 100644
--- a/core/modules/node/node.services.yml
+++ b/core/modules/node/node.services.yml
@@ -6,9 +6,9 @@ services:
     class: Drupal\node\Access\NodeRevisionAccessCheck
     arguments: ['@entity.manager', '@database']
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_node_revision }
   access_check.node.add:
     class: Drupal\node\Access\NodeAddAccessCheck
     arguments: ['@plugin.manager.entity']
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _node_add_access }
diff --git a/core/modules/overlay/lib/Drupal/overlay/Access/DismissMessageAccessCheck.php b/core/modules/overlay/lib/Drupal/overlay/Access/DismissMessageAccessCheck.php
index 087d40f..dc22f01 100644
--- a/core/modules/overlay/lib/Drupal/overlay/Access/DismissMessageAccessCheck.php
+++ b/core/modules/overlay/lib/Drupal/overlay/Access/DismissMessageAccessCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\overlay\Access;
 
-use Drupal\Core\Access\AccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -15,14 +15,7 @@
 /**
  * Provides an access check for overlay user dismiss message routes.
  */
-class DismissMessageAccessCheck implements AccessCheckInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function applies(Route $route) {
-    return array_key_exists('_access_overlay_dismiss_message', $route->getRequirements());
-  }
+class DismissMessageAccessCheck implements AccessInterface {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/overlay/overlay.services.yml b/core/modules/overlay/overlay.services.yml
index aed4378..0ff4994 100644
--- a/core/modules/overlay/overlay.services.yml
+++ b/core/modules/overlay/overlay.services.yml
@@ -8,4 +8,4 @@ services:
   access_check.overlay.dismiss_message:
     class: Drupal\overlay\Access\DismissMessageAccessCheck
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_overlay_dismiss_message }
diff --git a/core/modules/search/lib/Drupal/search/Access/SearchAccessCheck.php b/core/modules/search/lib/Drupal/search/Access/SearchAccessCheck.php
index b36d88e..2ad2400 100644
--- a/core/modules/search/lib/Drupal/search/Access/SearchAccessCheck.php
+++ b/core/modules/search/lib/Drupal/search/Access/SearchAccessCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\search\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Drupal\search\SearchPluginManager;
 use Symfony\Component\HttpFoundation\Request;
@@ -16,7 +16,7 @@
 /**
  * Checks access for viewing search.
  */
-class SearchAccessCheck implements StaticAccessCheckInterface {
+class SearchAccessCheck implements AccessInterface {
 
   /**
    * The search plugin manager.
@@ -38,13 +38,6 @@ public function __construct(SearchPluginManager $search_plugin_manager) {
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array('_search_access');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     return $this->searchManager->getActiveDefinitions() ? static::ALLOW : static::DENY;
   }
diff --git a/core/modules/search/lib/Drupal/search/Access/SearchPluginAccessCheck.php b/core/modules/search/lib/Drupal/search/Access/SearchPluginAccessCheck.php
index 9ecda1d..86e8166 100644
--- a/core/modules/search/lib/Drupal/search/Access/SearchPluginAccessCheck.php
+++ b/core/modules/search/lib/Drupal/search/Access/SearchPluginAccessCheck.php
@@ -19,13 +19,6 @@ class SearchPluginAccessCheck extends SearchAccessCheck {
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array('_search_plugin_view_access');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     $plugin_id = $route->getRequirement('_search_plugin_view_access');
     return $this->searchManager->pluginAccess($plugin_id, $account) ? static::ALLOW : static::DENY;
diff --git a/core/modules/search/search.services.yml b/core/modules/search/search.services.yml
index 88f6ea9..f6ec85a 100644
--- a/core/modules/search/search.services.yml
+++ b/core/modules/search/search.services.yml
@@ -7,13 +7,13 @@ services:
     class: Drupal\search\Access\SearchAccessCheck
     arguments: ['@plugin.manager.search']
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _search_access }
 
   access_check.search_plugin:
     class: Drupal\search\Access\SearchPluginAccessCheck
     arguments: ['@plugin.manager.search']
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _search_plugin_view_access }
 
   route_subscriber.search:
     class: Drupal\search\Routing\SearchRouteSubscriber
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Access/LinkAccessCheck.php b/core/modules/shortcut/lib/Drupal/shortcut/Access/LinkAccessCheck.php
index b928877..b85fb9f 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/Access/LinkAccessCheck.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/Access/LinkAccessCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\shortcut\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -15,14 +15,7 @@
 /**
  * Provides an access check for shortcut link delete routes.
  */
-class LinkAccessCheck implements StaticAccessCheckInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function appliesTo() {
-    return array('_access_shortcut_link');
-  }
+class LinkAccessCheck implements AccessInterface {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Access/ShortcutSetEditAccessCheck.php b/core/modules/shortcut/lib/Drupal/shortcut/Access/ShortcutSetEditAccessCheck.php
index 283825a..21bbda8 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/Access/ShortcutSetEditAccessCheck.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/Access/ShortcutSetEditAccessCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\shortcut\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -15,14 +15,7 @@
 /**
  * Provides an access check for shortcut link delete routes.
  */
-class ShortcutSetEditAccessCheck implements StaticAccessCheckInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function appliesTo() {
-    return array('_access_shortcut_set_edit');
-  }
+class ShortcutSetEditAccessCheck implements AccessInterface {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/shortcut/lib/Drupal/shortcut/Access/ShortcutSetSwitchAccessCheck.php b/core/modules/shortcut/lib/Drupal/shortcut/Access/ShortcutSetSwitchAccessCheck.php
index d39f630..6d844ed 100644
--- a/core/modules/shortcut/lib/Drupal/shortcut/Access/ShortcutSetSwitchAccessCheck.php
+++ b/core/modules/shortcut/lib/Drupal/shortcut/Access/ShortcutSetSwitchAccessCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\shortcut\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -15,14 +15,7 @@
 /**
  * Provides an access check for shortcut link delete routes.
  */
-class ShortcutSetSwitchAccessCheck implements StaticAccessCheckInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function appliesTo() {
-    return array('_access_shortcut_set_switch');
-  }
+class ShortcutSetSwitchAccessCheck implements AccessInterface {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/shortcut/shortcut.services.yml b/core/modules/shortcut/shortcut.services.yml
index 439a0e0..a660594 100644
--- a/core/modules/shortcut/shortcut.services.yml
+++ b/core/modules/shortcut/shortcut.services.yml
@@ -2,14 +2,14 @@ services:
   access_check.shortcut.link:
     class: Drupal\shortcut\Access\LinkAccessCheck
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_shortcut_link }
 
   access_check.shortcut.shortcut_set_edit:
     class: Drupal\shortcut\Access\ShortcutSetEditAccessCheck
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_shortcut_set_edit }
 
   access_check.shortcut.shortcut_set_switch:
     class: Drupal\shortcut\Access\ShortcutSetSwitchAccessCheck
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_shortcut_set_switch }
diff --git a/core/modules/system/lib/Drupal/system/Access/CronAccessCheck.php b/core/modules/system/lib/Drupal/system/Access/CronAccessCheck.php
index 7b19f54..ef094fd 100644
--- a/core/modules/system/lib/Drupal/system/Access/CronAccessCheck.php
+++ b/core/modules/system/lib/Drupal/system/Access/CronAccessCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\system\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -15,14 +15,7 @@
 /**
  * Access check for cron routes.
  */
-class CronAccessCheck implements StaticAccessCheckInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function appliesTo() {
-    return array('_access_system_cron');
-  }
+class CronAccessCheck implements AccessInterface {
 
   /**
    * Implements AccessCheckInterface::access().
diff --git a/core/modules/system/system.services.yml b/core/modules/system/system.services.yml
index 3371dad..8364081 100644
--- a/core/modules/system/system.services.yml
+++ b/core/modules/system/system.services.yml
@@ -2,7 +2,7 @@ services:
   access_check.cron:
     class: Drupal\system\Access\CronAccessCheck
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_system_cron }
   system.manager:
     class: Drupal\system\SystemManager
     arguments: ['@module_handler', '@database', '@entity.manager']
diff --git a/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/Access/DefinedTestAccessCheck.php b/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/Access/DefinedTestAccessCheck.php
index 7abafd4..7aa50dc 100644
--- a/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/Access/DefinedTestAccessCheck.php
+++ b/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/Access/DefinedTestAccessCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\router_test\Access;
 
-use Drupal\Core\Access\AccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
@@ -15,14 +15,7 @@
 /**
  * Defines an access checker similar to DefaultAccessCheck
  */
-class DefinedTestAccessCheck implements AccessCheckInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function applies(Route $route) {
-    return array_key_exists('_test_access', $route->getRequirements());
-  }
+class DefinedTestAccessCheck implements AccessInterface {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/Access/TestAccessCheck.php b/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/Access/TestAccessCheck.php
index 2f3664a..eda7560 100644
--- a/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/Access/TestAccessCheck.php
+++ b/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/Access/TestAccessCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\router_test\Access;
 
-use Drupal\Core\Access\AccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -15,14 +15,7 @@
 /**
  * Access check for test routes.
  */
-class TestAccessCheck implements AccessCheckInterface {
-
-  /**
-   * Implements AccessCheckInterface::applies().
-   */
-  public function applies(Route $route) {
-    return array_key_exists('_access_router_test', $route->getRequirements());
-  }
+class TestAccessCheck implements AccessInterface {
 
   /**
    * Implements AccessCheckInterface::access().
diff --git a/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/RouterTestServiceProvider.php b/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/RouterTestServiceProvider.php
index 9c1dbc3..641a055 100644
--- a/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/RouterTestServiceProvider.php
+++ b/core/modules/system/tests/modules/router_test_directory/lib/Drupal/router_test/RouterTestServiceProvider.php
@@ -21,6 +21,6 @@ class RouterTestServiceProvider implements ServiceProviderInterface {
   public function register(ContainerBuilder $container) {
     $container->register('router_test.subscriber', 'Drupal\router_test\RouteTestSubscriber')->addTag('event_subscriber');
     $container->register('access_check.router_test', 'Drupal\router_test\Access\TestAccessCheck')
-      ->addTag('access_check');
+      ->addTag('access_check', array('applies_to' => '_access_router_test'));
   }
 }
diff --git a/core/modules/tracker/lib/Drupal/tracker/Access/ViewOwnTrackerAccessCheck.php b/core/modules/tracker/lib/Drupal/tracker/Access/ViewOwnTrackerAccessCheck.php
index 18498f9..cb24e0b 100644
--- a/core/modules/tracker/lib/Drupal/tracker/Access/ViewOwnTrackerAccessCheck.php
+++ b/core/modules/tracker/lib/Drupal/tracker/Access/ViewOwnTrackerAccessCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\tracker\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -15,14 +15,7 @@
 /**
  * Access check for user tracker routes.
  */
-class ViewOwnTrackerAccessCheck implements StaticAccessCheckInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function appliesTo() {
-    return array('_access_tracker_own_information');
-  }
+class ViewOwnTrackerAccessCheck implements AccessInterface {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/tracker/tracker.services.yml b/core/modules/tracker/tracker.services.yml
index e657c1f..11e29e7 100644
--- a/core/modules/tracker/tracker.services.yml
+++ b/core/modules/tracker/tracker.services.yml
@@ -2,4 +2,4 @@ services:
   access_check.tracker.view_own:
     class: Drupal\tracker\Access\ViewOwnTrackerAccessCheck
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_tracker_own_information }
diff --git a/core/modules/update/lib/Drupal/update/Access/UpdateManagerAccessCheck.php b/core/modules/update/lib/Drupal/update/Access/UpdateManagerAccessCheck.php
index 4c805cd..89bbb1d 100644
--- a/core/modules/update/lib/Drupal/update/Access/UpdateManagerAccessCheck.php
+++ b/core/modules/update/lib/Drupal/update/Access/UpdateManagerAccessCheck.php
@@ -8,7 +8,7 @@
 namespace Drupal\update\Access;
 
 use Drupal\Component\Utility\Settings;
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -16,7 +16,7 @@
 /**
  * Determines whether allow authorized operations is set.
  */
-class UpdateManagerAccessCheck implements StaticAccessCheckInterface {
+class UpdateManagerAccessCheck implements AccessInterface {
 
   /**
    * Settings Service.
@@ -28,8 +28,8 @@ class UpdateManagerAccessCheck implements StaticAccessCheckInterface {
   /**
    * Constructs a UpdateManagerAccessCheck object.
    *
-   * @param \Drupal\update\updateManager $update_manager
-   *   update Manager Service.
+   * @param \Drupal\Component\Utility\Settings $settings
+   *   The read-only settings container.
    */
   public function __construct(Settings $settings) {
     $this->settings = $settings;
@@ -38,13 +38,6 @@ public function __construct(Settings $settings) {
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array('_access_update_manager');
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function access(Route $route, Request $request, AccountInterface $account) {
     return $this->settings->get('allow_authorize_operations', TRUE) ? static::ALLOW : static::DENY;
   }
diff --git a/core/modules/update/update.services.yml b/core/modules/update/update.services.yml
index 0ffafc2..7008182 100644
--- a/core/modules/update/update.services.yml
+++ b/core/modules/update/update.services.yml
@@ -3,4 +3,4 @@ services:
     class: Drupal\update\Access\UpdateManagerAccessCheck
     arguments: ['@settings']
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_update_manager }
diff --git a/core/modules/user/lib/Drupal/user/Access/LoginStatusCheck.php b/core/modules/user/lib/Drupal/user/Access/LoginStatusCheck.php
index 547057b..af52c15 100644
--- a/core/modules/user/lib/Drupal/user/Access/LoginStatusCheck.php
+++ b/core/modules/user/lib/Drupal/user/Access/LoginStatusCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\user\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -15,14 +15,7 @@
 /**
  * Determines access to routes based on login status of current user.
  */
-class LoginStatusCheck implements StaticAccessCheckInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function appliesTo() {
-    return array('_user_is_logged_in');
-  }
+class LoginStatusCheck implements AccessInterface {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/user/lib/Drupal/user/Access/PermissionAccessCheck.php b/core/modules/user/lib/Drupal/user/Access/PermissionAccessCheck.php
index b9d084e..a159b1c 100644
--- a/core/modules/user/lib/Drupal/user/Access/PermissionAccessCheck.php
+++ b/core/modules/user/lib/Drupal/user/Access/PermissionAccessCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\user\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -15,14 +15,7 @@
 /**
  * Determines access to routes based on permissions defined via hook_permission().
  */
-class PermissionAccessCheck implements StaticAccessCheckInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function appliesTo() {
-    return array('_permission');
-  }
+class PermissionAccessCheck implements AccessInterface {
 
   /**
    * Implements AccessCheckInterface::access().
diff --git a/core/modules/user/lib/Drupal/user/Access/RegisterAccessCheck.php b/core/modules/user/lib/Drupal/user/Access/RegisterAccessCheck.php
index 6ba064e..e234afb 100644
--- a/core/modules/user/lib/Drupal/user/Access/RegisterAccessCheck.php
+++ b/core/modules/user/lib/Drupal/user/Access/RegisterAccessCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\user\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\Routing\Route;
 use Symfony\Component\HttpFoundation\Request;
@@ -15,14 +15,7 @@
 /**
  * Access check for user registration routes.
  */
-class RegisterAccessCheck implements StaticAccessCheckInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function appliesTo() {
-    return array('_access_user_register');
-  }
+class RegisterAccessCheck implements AccessInterface {
 
   /**
    * Implements AccessCheckInterface::access().
diff --git a/core/modules/user/lib/Drupal/user/Access/RoleAccessCheck.php b/core/modules/user/lib/Drupal/user/Access/RoleAccessCheck.php
index 0253a42..e3ace16 100644
--- a/core/modules/user/lib/Drupal/user/Access/RoleAccessCheck.php
+++ b/core/modules/user/lib/Drupal/user/Access/RoleAccessCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\user\Access;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
@@ -19,14 +19,7 @@
  * single role, users with that role with have access. If you specify multiple
  * ones you can conjunct them with AND by using a "+" and with OR by using ",".
  */
-class RoleAccessCheck implements StaticAccessCheckInterface {
-
-  /**
-   * {@inheritdoc}
-   */
-  public function appliesTo() {
-    return array('_role');
-  }
+class RoleAccessCheck implements AccessInterface {
 
   /**
    * {@inheritdoc}
diff --git a/core/modules/user/user.services.yml b/core/modules/user/user.services.yml
index 6fb7d47..73d7353 100644
--- a/core/modules/user/user.services.yml
+++ b/core/modules/user/user.services.yml
@@ -2,19 +2,19 @@ services:
   access_check.permission:
     class: Drupal\user\Access\PermissionAccessCheck
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _permission }
   access_check.user.register:
     class: Drupal\user\Access\RegisterAccessCheck
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _access_user_register }
   access_check.user.role:
     class: Drupal\user\Access\RoleAccessCheck
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _role }
   access_check.user.login_status:
     class: Drupal\user\Access\LoginStatusCheck
     tags:
-      - { name: access_check }
+      - { name: access_check, applies_to: _user_is_logged_in }
   user.data:
     class: Drupal\user\UserData
     arguments: ['@database']
diff --git a/core/modules/views/lib/Drupal/views/ViewsAccessCheck.php b/core/modules/views/lib/Drupal/views/ViewsAccessCheck.php
index 483f582..8a81fb7 100644
--- a/core/modules/views/lib/Drupal/views/ViewsAccessCheck.php
+++ b/core/modules/views/lib/Drupal/views/ViewsAccessCheck.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\views;
 
-use Drupal\Core\Access\StaticAccessCheckInterface;
+use Drupal\Core\Access\AccessCheckInterface;
 use Drupal\Core\Session\AccountInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\Routing\Route;
@@ -17,13 +17,13 @@
  *
  * @todo We could leverage the permission one as well?
  */
-class ViewsAccessCheck implements StaticAccessCheckInterface {
+class ViewsAccessCheck implements AccessCheckInterface {
 
   /**
    * {@inheritdoc}
    */
-  public function appliesTo() {
-    return array('views_id');
+  public function applies(Route $route) {
+    return $route->hasDefault('view_id');
   }
 
   /**
diff --git a/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php b/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php
index c7ae50a..bf9aaae 100644
--- a/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php
@@ -11,7 +11,6 @@
 use Drupal\Core\Routing\Access\AccessInterface;
 use Drupal\Core\Access\AccessManager;
 use Drupal\Core\Access\DefaultAccessCheck;
-use Drupal\system\Tests\Routing\MockRouteProvider;
 use Drupal\Tests\UnitTestCase;
 use Drupal\router_test\Access\DefinedTestAccessCheck;
 use Symfony\Cmf\Component\Routing\RouteObjectInterface;
@@ -323,7 +322,7 @@ public function testCheckConjunctions($conjunction, $name, $condition_one, $cond
     $this->setupAccessChecker();
     $access_check = new DefinedTestAccessCheck();
     $this->container->register('test_access_defined', $access_check);
-    $this->accessManager->addCheckService('test_access_defined');
+    $this->accessManager->addCheckService('test_access_defined', array('_test_access'));
 
     $request = new Request();
 
@@ -342,21 +341,6 @@ public function testCheckConjunctions($conjunction, $name, $condition_one, $cond
   }
 
   /**
-   * Tests the static access checker interface.
-   */
-  public function testStaticAccessCheckInterface() {
-    $mock_static = $this->getMock('Drupal\Core\Access\StaticAccessCheckInterface');
-    $mock_static->expects($this->once())
-      ->method('appliesTo')
-      ->will($this->returnValue(array('_access')));
-
-    $this->container->set('test_static_access', $mock_static);
-    $this->accessManager->addCheckService('test_static_access');
-
-    $this->accessManager->setChecks($this->routeCollection);
-  }
-
-  /**
    * Tests the checkNamedRoute method.
    *
    * @see \Drupal\Core\Access\AccessManager::checkNamedRoute()
@@ -500,7 +484,7 @@ protected function setupAccessChecker() {
     $this->accessManager->setContainer($this->container);
     $access_check = new DefaultAccessCheck();
     $this->container->register('test_access_default', $access_check);
-    $this->accessManager->addCheckService('test_access_default');
+    $this->accessManager->addCheckService('test_access_default', array('_access'));
   }
 
 }
diff --git a/core/tests/Drupal/Tests/Core/Access/CsrfAccessCheckTest.php b/core/tests/Drupal/Tests/Core/Access/CsrfAccessCheckTest.php
index cbe3951..e654b05 100644
--- a/core/tests/Drupal/Tests/Core/Access/CsrfAccessCheckTest.php
+++ b/core/tests/Drupal/Tests/Core/Access/CsrfAccessCheckTest.php
@@ -63,13 +63,6 @@ public function setUp() {
   }
 
   /**
-   * Tests CsrfAccessCheck::appliesTo().
-   */
-  public function testAppliesTo() {
-    $this->assertEquals($this->accessCheck->appliesTo(), array('_csrf_token'), 'Access checker returned the expected appliesTo() array.');
-  }
-
-  /**
    * Tests the access() method with a valid token.
    */
   public function testAccessTokenPass() {
diff --git a/core/tests/Drupal/Tests/Core/Access/CustomAccessCheckTest.php b/core/tests/Drupal/Tests/Core/Access/CustomAccessCheckTest.php
index 7a5676b..14a7721 100644
--- a/core/tests/Drupal/Tests/Core/Access/CustomAccessCheckTest.php
+++ b/core/tests/Drupal/Tests/Core/Access/CustomAccessCheckTest.php
@@ -52,14 +52,6 @@ protected function setUp() {
     $this->accessChecker = new CustomAccessCheck($this->controllerResolver);
   }
 
-
-  /**
-   * Tests the appliesTo method.
-   */
-  public function testAppliesTo() {
-    $this->assertEquals($this->accessChecker->appliesTo(), array('_custom_access'));
-  }
-
   /**
    * Test the access method.
    */
diff --git a/core/tests/Drupal/Tests/Core/Access/DefaultAccessCheckTest.php b/core/tests/Drupal/Tests/Core/Access/DefaultAccessCheckTest.php
index 89c845a..2db8feb 100644
--- a/core/tests/Drupal/Tests/Core/Access/DefaultAccessCheckTest.php
+++ b/core/tests/Drupal/Tests/Core/Access/DefaultAccessCheckTest.php
@@ -51,14 +51,6 @@ protected function setUp() {
     $this->accessChecker = new DefaultAccessCheck();
   }
 
-
-  /**
-   * Tests the appliesTo method.
-   */
-  public function testAppliesTo() {
-    $this->assertEquals($this->accessChecker->appliesTo(), array('_access'), 'Access checker returned the expected appliesTo() array.');
-  }
-
   /**
    * Test the access method.
    */
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityAccessCheckTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityAccessCheckTest.php
index 3e6c3b9..bba4419 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityAccessCheckTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityAccessCheckTest.php
@@ -29,14 +29,6 @@ public static function getInfo() {
   }
 
   /**
-   * Tests the appliesTo method for the access checker.
-   */
-  public function testAppliesTo() {
-    $entity_access = new EntityAccessCheck();
-    $this->assertEquals($entity_access->appliesTo(), array('_entity_access'), 'Access checker returned the expected appliesTo() array.');
-  }
-
-  /**
    * Tests the method for checking access to routes.
    */
   public function testAccess() {
diff --git a/core/tests/Drupal/Tests/Core/Entity/EntityCreateAccessCheckTest.php b/core/tests/Drupal/Tests/Core/Entity/EntityCreateAccessCheckTest.php
index dcda69a..fdf5675 100644
--- a/core/tests/Drupal/Tests/Core/Entity/EntityCreateAccessCheckTest.php
+++ b/core/tests/Drupal/Tests/Core/Entity/EntityCreateAccessCheckTest.php
@@ -45,15 +45,6 @@ protected function setUp() {
   }
 
   /**
-   * Tests the appliesTo method for the access checker.
-   */
-  public function testAppliesTo() {
-    $entity_manager = $this->getMock('Drupal\Core\Entity\EntityManagerInterface');
-
-    $entity_access = new EntityCreateAccessCheck($entity_manager);
-    $this->assertEquals($entity_access->appliesTo(), array('_entity_create_access'), 'Access checker returned the expected appliesTo() array.');
-  }
-  /**
    * Provides test data for testAccess.
    *
    * @return array
