diff --git a/core/lib/Drupal/Core/Access/AccessInterface.php b/core/lib/Drupal/Core/Access/AccessInterface.php
index d37a51f..f555ecb 100644
--- a/core/lib/Drupal/Core/Access/AccessInterface.php
+++ b/core/lib/Drupal/Core/Access/AccessInterface.php
@@ -11,21 +11,23 @@
 use Symfony\Component\Routing\Route;
 
 /**
- * Provides access check results.
+ * An access check service determines access rules for particular routes.
  */
 interface AccessInterface {
 
   /**
    * Grant access.
    *
-   * A checker should return this value to indicate that it grants access.
+   * A checker should return this value to indicate that it grants access to a
+   * route.
    */
   const ALLOW = TRUE;
 
   /**
    * Deny access.
    *
-   * A checker should return this value to indicate it does not grant access.
+   * A checker should return this value to indicate it does not grant access to
+   * a route.
    */
   const DENY = NULL;
 
@@ -33,9 +35,24 @@
    * Block access.
    *
    * A checker should return this value to indicate that it wants to completely
-   * block access, regardless of any other access checkers. Most checkers
-   * should prefer DENY.
+   * block access to this route, regardless of any other access checkers. Most
+   * checkers should prefer DENY.
    */
   const KILL = FALSE;
 
+  /**
+   * Checks for access to a route.
+   *
+   * @param \Symfony\Component\Routing\Route $route
+   *   The route to check against.
+   * @param \Symfony\Component\HttpFoundation\Request $request
+   *   The request object.
+   *
+   * @return mixed
+   *   TRUE if access is allowed.
+   *   FALSE if not.
+   *   NULL if no opinion.
+   */
+  public function access(Route $route, Request $request);
+
 }
diff --git a/core/lib/Drupal/Core/Access/AccessibleInterface.php b/core/lib/Drupal/Core/Access/AccessibleInterface.php
deleted file mode 100644
index faa5a6f..0000000
--- a/core/lib/Drupal/Core/Access/AccessibleInterface.php
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Core\Access\AccessibleInterface.
- */
-
-namespace Drupal\Core\Access;
-
-use Drupal\Core\Session\AccountInterface;
-
-/**
- * Interface for checking access.
- */
-interface AccessibleInterface extends AccessInterface {
-
-  /**
-   * Checks data value access.
-   *
-   * @param string $operation
-   *   The operation to be performed.
-   * @param \Drupal\Core\Session\AccountInterface $account
-   *   (optional) The user for which to check access, or NULL to check access
-   *   for the current user. Defaults to NULL.
-   *
-   * @return bool|null
-   *   self::ALLOW, self::DENY, or self::KILL.
-   */
-  public function access($operation, AccountInterface $account = NULL);
-
-}
diff --git a/core/lib/Drupal/Core/Entity/EntityInterface.php b/core/lib/Drupal/Core/Entity/EntityInterface.php
index 5f84ac9..06e412a 100644
--- a/core/lib/Drupal/Core/Entity/EntityInterface.php
+++ b/core/lib/Drupal/Core/Entity/EntityInterface.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\Core\Entity;
 
-use Drupal\Core\Access\AccessibleInterface;
+use Drupal\Core\TypedData\AccessibleInterface;
 
 /**
  * Defines a common interface for all entity objects.
diff --git a/core/lib/Drupal/Core/Entity/Field/FieldItemListInterface.php b/core/lib/Drupal/Core/Entity/Field/FieldItemListInterface.php
index 856c3fc..300de8f 100644
--- a/core/lib/Drupal/Core/Entity/Field/FieldItemListInterface.php
+++ b/core/lib/Drupal/Core/Entity/Field/FieldItemListInterface.php
@@ -8,7 +8,7 @@
 namespace Drupal\Core\Entity\Field;
 
 use Drupal\Core\Session\AccountInterface;
-use Drupal\Core\Access\AccessibleInterface;
+use Drupal\Core\TypedData\AccessibleInterface;
 use Drupal\Core\TypedData\ListInterface;
 
 /**
diff --git a/core/lib/Drupal/Core/Routing/Access/AccessInterface.php b/core/lib/Drupal/Core/Routing/Access/AccessInterface.php
deleted file mode 100644
index 3d93eea..0000000
--- a/core/lib/Drupal/Core/Routing/Access/AccessInterface.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-/**
- * @file
- * Contains \Drupal\Core\Routing\Access\AccessInterface.
- */
-
-namespace Drupal\Core\Routing\Access;
-
-use Drupal\Core\Access\AccessInterface as GenericAccessInterface;
-use Symfony\Component\HttpFoundation\Request;
-use Symfony\Component\Routing\Route;
-
-/**
- * An access check service determines access rules for particular routes.
- */
-interface AccessInterface extends GenericAccessInterface {
-
-  /**
-   * Checks for access to a route.
-   *
-   * @param \Symfony\Component\Routing\Route $route
-   *   The route to check against.
-   * @param \Symfony\Component\HttpFoundation\Request $request
-   *   The request object.
-   *
-   * @return bool|null
-   *   self::ALLOW, self::DENY, or self::KILL.
-   */
-  public function access(Route $route, Request $request);
-
-}
diff --git a/core/lib/Drupal/Core/TypedData/AccessibleInterface.php b/core/lib/Drupal/Core/TypedData/AccessibleInterface.php
new file mode 100644
index 0000000..30e373d
--- /dev/null
+++ b/core/lib/Drupal/Core/TypedData/AccessibleInterface.php
@@ -0,0 +1,39 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\Core\TypedData\AccessibleInterface.
+ */
+
+namespace Drupal\Core\TypedData;
+
+use Drupal\Core\Session\AccountInterface;
+
+/**
+ * Interface for checking access.
+ */
+interface AccessibleInterface {
+
+  /**
+   * Checks data value access.
+   *
+   * @param string $operation
+   *   (optional) The operation to be performed. Supported values are:
+   *   - view
+   *   - create
+   *   - update
+   *   - delete
+   *   Defaults to 'view'.
+   * @param \Drupal\Core\Session\AccountInterface $account
+   *   (optional) The user for which to check access, or NULL to check access
+   *   for the current user. Defaults to NULL.
+   *
+   * @return bool
+   *   TRUE if the given user has access for the given operation, FALSE
+   *   otherwise.
+   *
+   * @todo Don't depend on module level code.
+   */
+  public function access($operation = 'view', AccountInterface $account = NULL);
+
+}
diff --git a/core/lib/Drupal/Core/TypedData/Annotation/DataType.php b/core/lib/Drupal/Core/TypedData/Annotation/DataType.php
index da2d300..ec9ef6d 100644
--- a/core/lib/Drupal/Core/TypedData/Annotation/DataType.php
+++ b/core/lib/Drupal/Core/TypedData/Annotation/DataType.php
@@ -20,7 +20,7 @@
  * or more data properties. Typed data objects for complex data types have to
  * implement the \Drupal\Core\TypedData\ComplexDataInterface. Further interface
  * that may be implemented are:
- *  - \Drupal\Core\Access\AccessibleInterface
+ *  - \Drupal\Core\TypedData\AccessibleInterface
  *  - \Drupal\Core\TypedData\TranslatableInterface
  *
  * Furthermore, lists of data items are represented by objects implementing the
diff --git a/core/modules/node/lib/Drupal/node/Plugin/Search/NodeSearch.php b/core/modules/node/lib/Drupal/node/Plugin/Search/NodeSearch.php
index 8e90efb..cdc399f 100644
--- a/core/modules/node/lib/Drupal/node/Plugin/Search/NodeSearch.php
+++ b/core/modules/node/lib/Drupal/node/Plugin/Search/NodeSearch.php
@@ -18,7 +18,7 @@
 use Drupal\Core\Language\Language;
 use Drupal\Core\Plugin\PluginFormInterface;
 use Drupal\Core\Session\AccountInterface;
-use Drupal\Core\Access\AccessibleInterface;
+use Drupal\Core\TypedData\AccessibleInterface;
 use Drupal\Core\Database\Query\Condition;
 use Drupal\search\Annotation\SearchPlugin;
 use Drupal\search\Plugin\SearchPluginBase;
diff --git a/core/modules/search/lib/Drupal/search/SearchPluginManager.php b/core/modules/search/lib/Drupal/search/SearchPluginManager.php
index dac919b..612db99 100644
--- a/core/modules/search/lib/Drupal/search/SearchPluginManager.php
+++ b/core/modules/search/lib/Drupal/search/SearchPluginManager.php
@@ -114,7 +114,7 @@ public function pluginAccess($plugin_id, AccountInterface $account) {
       return FALSE;
     }
     // Plugins that implement AccessibleInterface can deny access.
-    if (is_subclass_of($definition['class'], '\Drupal\Core\Access\AccessibleInterface')) {
+    if (is_subclass_of($definition['class'], '\Drupal\Core\TypedData\AccessibleInterface')) {
       return $this->createInstance($plugin_id)->access('view', $account);
     }
     return TRUE;
diff --git a/core/modules/system/entity.api.php b/core/modules/system/entity.api.php
index a9123a1..0068427 100644
--- a/core/modules/system/entity.api.php
+++ b/core/modules/system/entity.api.php
@@ -710,7 +710,7 @@ function hook_entity_operation_alter(array &$operations, \Drupal\Core\Entity\Ent
  *
  * @param string $operation
  *   The operation to be performed. See
- *   \Drupal\Core\Access\AccessibleInterface::access() for possible values.
+ *   \Drupal\Core\TypedData\AccessibleInterface::access() for possible values.
  * @param \Drupal\Core\Entity\Field\FieldDefinitionInterface $field_definition
  *   The field definition.
  * @param \Drupal\Core\Session\AccountInterface $account
diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityAccessTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityAccessTest.php
index 373c90b..33b2c1a 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityAccessTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityAccessTest.php
@@ -9,7 +9,7 @@
 
 use Drupal\Core\Language\Language;
 use Drupal\Core\Session\AccountInterface;
-use Drupal\Core\Access\AccessibleInterface;
+use Drupal\Core\TypedData\AccessibleInterface;
 use Drupal\Core\Entity\EntityAccessController;
 
 /**
diff --git a/core/modules/user/lib/Drupal/user/Plugin/Search/UserSearch.php b/core/modules/user/lib/Drupal/user/Plugin/Search/UserSearch.php
index e4827b6..52ed50b 100644
--- a/core/modules/user/lib/Drupal/user/Plugin/Search/UserSearch.php
+++ b/core/modules/user/lib/Drupal/user/Plugin/Search/UserSearch.php
@@ -12,7 +12,7 @@
 use Drupal\Core\Entity\EntityManager;
 use Drupal\Core\Extension\ModuleHandlerInterface;
 use Drupal\Core\Session\AccountInterface;
-use Drupal\Core\Access\AccessibleInterface;
+use Drupal\Core\TypedData\AccessibleInterface;
 use Drupal\search\Annotation\SearchPlugin;
 use Drupal\search\Plugin\SearchPluginBase;
 use Symfony\Component\DependencyInjection\ContainerInterface;
diff --git a/core/modules/views_ui/lib/Drupal/views_ui/ViewUI.php b/core/modules/views_ui/lib/Drupal/views_ui/ViewUI.php
index f126ede..6fccced 100644
--- a/core/modules/views_ui/lib/Drupal/views_ui/ViewUI.php
+++ b/core/modules/views_ui/lib/Drupal/views_ui/ViewUI.php
@@ -892,7 +892,7 @@ public function language() {
   }
 
   /**
-   * {@inheritdoc}
+   * Implements \Drupal\Core\TypedData\AccessibleInterface::access().
    */
   public function access($operation = 'view', AccountInterface $account = NULL) {
     return $this->storage->access($operation, $account);
diff --git a/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php b/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php
index a545cc8..d12f5c0 100644
--- a/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php
+++ b/core/tests/Drupal/Tests/Core/Access/AccessManagerTest.php
@@ -8,7 +8,7 @@
 namespace Drupal\Tests\Core\Access;
 
 use Drupal\Core\Access\AccessCheckInterface;
-use Drupal\Core\Routing\Access\AccessInterface;
+use Drupal\Core\Access\AccessInterface;
 use Drupal\Core\Access\AccessManager;
 use Drupal\Core\Access\DefaultAccessCheck;
 use Drupal\system\Tests\Routing\MockRouteProvider;
