diff --git a/core/modules/comment/comment.views.inc b/core/modules/comment/comment.views.inc
index 1c72b16..cdd7ec0 100644
--- a/core/modules/comment/comment.views.inc
+++ b/core/modules/comment/comment.views.inc
@@ -6,621 +6,6 @@
  */
 
 /**
- * Implements hook_views_data().
- */
-function comment_views_data() {
-
-  // Define the base group of this table. Fields that don't have a group defined
-  // will go into this field by default.
-  $data['comment']['table']['group']  = t('Comment');
-
-  $data['comment']['table']['base'] = array(
-    'field' => 'cid',
-    'title' => t('Comment'),
-    'help' => t("Comments are responses to node content."),
-    'access query tag' => 'comment_access',
-  );
-  $data['comment']['table']['entity type'] = 'comment';
-  $data['comment']['table']['wizard_id'] = 'comment';
-
-  $data['comment_field_data']['table']['group'] = t('Comment');
-  $data['comment_field_data']['table']['entity type'] = 'comment';
-  $data['comment_field_data']['table']['join']['comment'] = array(
-    'type' => 'INNER',
-    'left_field' => 'cid',
-    'field' => 'cid',
-  );
-
-  $data['comment_field_data']['subject'] = array(
-    'title' => t('Title'),
-    'help' => t('The title of the comment.'),
-    'field' => array(
-      'id' => 'comment',
-    ),
-    'filter' => array(
-      'id' => 'string',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-    'argument' => array(
-      'id' => 'string',
-    ),
-  );
-
-  $data['comment']['cid'] = array(
-    'title' => t('ID'),
-    'help' => t('The comment ID of the field'),
-    'field' => array(
-      'id' => 'comment',
-    ),
-    'filter' => array(
-      'id' => 'numeric',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-    'argument' => array(
-      'id' => 'numeric',
-    ),
-  );
-
-  $data['comment_field_data']['name'] = array(
-    'title' => t('Author'),
-    'help' => t("The name of the comment's author. Can be rendered as a link to the author's homepage."),
-    'field' => array(
-      'id' => 'comment_username',
-    ),
-    'filter' => array(
-      'id' => 'string',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-    'argument' => array(
-      'id' => 'string',
-    ),
-  );
-
-  $data['comment_field_data']['homepage'] = array(
-    'title' => t("Author's website"),
-    'help' => t("The website address of the comment's author. Can be rendered as a link. Will be empty if the author is a registered user."),
-    'field' => array(
-      'id' => 'url',
-    ),
-    'filter' => array(
-      'id' => 'string',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-    'argument' => array(
-      'id' => 'string',
-    ),
-  );
-
-  $data['comment_field_data']['hostname'] = array(
-    'title' => t('Hostname'),
-    'help' => t('Hostname of user that posted the comment.'),
-    'field' => array(
-      'id' => 'standard',
-    ),
-    'filter' => array(
-      'id' => 'string',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-    'argument' => array(
-      'id' => 'string',
-    ),
-  );
-
-  $data['comment_field_data']['mail'] = array(
-    'title' => t('Email'),
-    'help' => t('Email of user that posted the comment. Will be empty if the author is a registered user.'),
-    'field' => array(
-      'id' => 'standard',
-    ),
-    'filter' => array(
-      'id' => 'string',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-    'argument' => array(
-      'id' => 'string',
-    ),
-  );
-
-  $data['comment_field_data']['created'] = array(
-    'title' => t('Post date'),
-    'help' => t('Date and time of when the comment was created.'),
-    'field' => array(
-      'id' => 'date',
-    ),
-    'sort' => array(
-      'id' => 'date',
-    ),
-    'filter' => array(
-      'id' => 'date',
-    ),
-  );
-
-  if (\Drupal::moduleHandler()->moduleExists('language')) {
-    $data['comment']['langcode'] = array(
-      'title' => t('Language'),
-      'help' => t('The language the comment is in.'),
-      'field' => array(
-        'id' => 'language',
-      ),
-      'filter' => array(
-        'id' => 'language',
-      ),
-      'argument' => array(
-        'id' => 'language',
-      ),
-      'sort' => array(
-        'id' => 'standard',
-      ),
-    );
-  }
-
-  $data['comment_field_data']['changed'] = array(
-    'title' => t('Updated date'),
-    'help' => t('Date and time of when the comment was last updated.'),
-    'field' => array(
-      'id' => 'date',
-    ),
-    'sort' => array(
-      'id' => 'date',
-    ),
-    'filter' => array(
-      'id' => 'date',
-    ),
-  );
-
-  $data['comment_field_data']['changed_fulldata'] = array(
-    'title' => t('Created date'),
-    'help' => t('Date in the form of CCYYMMDD.'),
-    'argument' => array(
-      'field' => 'changed',
-      'id' => 'date_fulldate',
-    ),
-  );
-
-  $data['comment_field_data']['changed_year_month'] = array(
-    'title' => t('Created year + month'),
-    'help' => t('Date in the form of YYYYMM.'),
-    'argument' => array(
-      'field' => 'changed',
-      'id' => 'date_year_month',
-    ),
-  );
-
-  $data['comment_field_data']['changed_year'] = array(
-    'title' => t('Created year'),
-    'help' => t('Date in the form of YYYY.'),
-    'argument' => array(
-      'field' => 'changed',
-      'id' => 'date_year',
-    ),
-  );
-
-  $data['comment_field_data']['changed_month'] = array(
-    'title' => t('Created month'),
-    'help' => t('Date in the form of MM (01 - 12).'),
-    'argument' => array(
-      'field' => 'changed',
-      'id' => 'date_month',
-    ),
-  );
-
-  $data['comment_field_data']['changed_day'] = array(
-    'title' => t('Created day'),
-    'help' => t('Date in the form of DD (01 - 31).'),
-    'argument' => array(
-      'field' => 'changed',
-      'id' => 'date_day',
-    ),
-  );
-
-  $data['comment_field_data']['changed_week'] = array(
-    'title' => t('Created week'),
-    'help' => t('Date in the form of WW (01 - 53).'),
-    'argument' => array(
-      'field' => 'changed',
-      'id' => 'date_week',
-    ),
-  );
-
-  $data['comment_field_data']['status'] = array(
-    'title' => t('Published status'),
-    'help' => t('Whether or not the comment is published.'),
-    'field' => array(
-      'id' => 'boolean',
-      'output formats' => array(
-        'published-notpublished' => array(t('Published'), t('Not published')),
-      ),
-    ),
-    'filter' => array(
-      'id' => 'boolean',
-      'label' => t('Published status'),
-      'type' => 'yes-no',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-  );
-
-  $data['comment']['view_comment'] = array(
-    'field' => array(
-      'title' => t('Link to comment'),
-      'help' => t('Provide a simple link to view the comment.'),
-      'id' => 'comment_link',
-    ),
-  );
-
-  $data['comment']['edit_comment'] = array(
-    'field' => array(
-      'title' => t('Link to edit comment'),
-      'help' => t('Provide a simple link to edit the comment.'),
-      'id' => 'comment_link_edit',
-    ),
-  );
-
-  $data['comment']['delete_comment'] = array(
-    'field' => array(
-      'title' => t('Link to delete comment'),
-      'help' => t('Provide a simple link to delete the comment.'),
-      'id' => 'comment_link_delete',
-    ),
-  );
-
-  $data['comment']['publish_comment'] = array(
-    'field' => array(
-      'title' => t('Link to publish comment'),
-      'help' => t('Provide a simple link to publish the comment.'),
-      'id' => 'comment_link_publish',
-    ),
-  );
-
-  $data['comment']['unpublish_comment'] = array(
-    'field' => array(
-      'title' => t('Link to unpublish comment'),
-      'help' => t('Provide a simple link to unpublish the comment.'),
-      'id' => 'comment_link_unpublish',
-    ),
-  );
-
-  $data['comment']['replyto_comment'] = array(
-    'field' => array(
-      'title' => t('Link to reply-to comment'),
-      'help' => t('Provide a simple link to reply to the comment.'),
-      'id' => 'comment_link_reply',
-    ),
-  );
-
-  $data['comment_field_data']['thread'] = array(
-    'field' => array(
-      'title' => t('Depth'),
-      'help' => t('Display the depth of the comment if it is threaded.'),
-      'id' => 'comment_depth',
-    ),
-    'sort' => array(
-      'title' => t('Thread'),
-      'help' => t('Sort by the threaded order. This will keep child comments together with their parents.'),
-      'id' => 'comment_thread',
-    ),
-  );
-
-  $data['comment_field_data']['entity_id'] = array(
-    'title' => t('Entity ID'),
-    'help' => t('The Entity ID to which the comment is a reply to.'),
-    'field' => array(
-      'id' => 'standard',
-    ),
-    'filter' => array(
-      'id' => 'numeric',
-    ),
-    'argument' => array(
-      'id' => 'numeric',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-  );
-
-  $data['comment_field_data']['entity_type'] = array(
-    'title' => t('Entity type'),
-    'help' => t('The Entity type to which the comment is a reply to.'),
-    'field' => array(
-      'id' => 'standard',
-    ),
-    'filter' => array(
-      'id' => 'string',
-    ),
-    'argument' => array(
-      'id' => 'string',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-  );
-
-  $data['comment_field_data']['field_name'] = array(
-    'title' => t('Comment field name'),
-    'help' => t('The Field name from which the comment originated.'),
-    'field' => array(
-      'id' => 'standard',
-    ),
-    'filter' => array(
-      'id' => 'string',
-    ),
-    'argument' => array(
-      'id' => 'string',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-  );
-
-  $data['comment']['comment_type'] = array(
-    'title' => t('Comment type'),
-    'help' => t('The comment type for this comment.'),
-    'field' => array(
-      'id' => 'standard',
-    ),
-    'filter' => array(
-      'id' => 'string',
-    ),
-    'argument' => array(
-      'id' => 'string',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-  );
-
-  $entities_types = \Drupal::entityManager()->getDefinitions();
-
-  // Provide a relationship for each entity type except comment.
-  foreach ($entities_types as $type => $entity_type) {
-    if ($type == 'comment' || !$entity_type->isSubclassOf('\Drupal\Core\Entity\ContentEntityInterface') || !$entity_type->getBaseTable()) {
-      continue;
-    }
-    if ($fields = \Drupal::service('comment.manager')->getFields($type)) {
-      $data['comment_field_data'][$type] = array(
-        'relationship' => array(
-          'title' => $entity_type->getLabel(),
-          'help' => t('The @entity_type to which the comment is a reply to.', array('@entity_type' => $entity_type->getLabel())),
-          'base' => $entity_type->getBaseTable(),
-          'base field' => $entity_type->getKey('id'),
-          'relationship field' => 'entity_id',
-          'id' => 'standard',
-          'label' => $entity_type->getLabel(),
-          'extra' => array(
-            array(
-              'field' => 'entity_type',
-              'value' => $type,
-              'table' => 'comment_field_data'
-            ),
-          ),
-        ),
-      );
-    }
-  }
-
-  $data['comment_field_data']['uid'] = array(
-    'title' => t('Author uid'),
-    'help' => t('If you need more fields than the uid add the comment: author relationship'),
-    'relationship' => array(
-      'title' => t('Author'),
-      'help' => t("The User ID of the comment's author."),
-      'base' => 'users',
-      'base field' => 'uid',
-      'id' => 'standard',
-      'label' => t('author'),
-    ),
-    'filter' => array(
-      'id' => 'numeric',
-    ),
-    'argument' => array(
-      'id' => 'numeric',
-    ),
-    'field' => array(
-      'id' => 'user',
-    ),
-  );
-
-  $data['comment_field_data']['pid'] = array(
-    'title' => t('Parent CID'),
-    'help' => t('The Comment ID of the parent comment.'),
-    'field' => array(
-      'id' => 'standard',
-    ),
-    'relationship' => array(
-      'title' => t('Parent comment'),
-      'help' => t('The parent comment.'),
-      'base' => 'comment',
-      'base field' => 'cid',
-      'id' => 'standard',
-      'label' => t('Parent comment'),
-    ),
-  );
-
-  if (\Drupal::moduleHandler()->moduleExists('content_translation')) {
-    $data['comment']['translation_link'] = array(
-      'title' => t('Translation link'),
-      'help' => t('Provide a link to the translations overview for comments.'),
-      'field' => array(
-        'id' => 'content_translation_link',
-      ),
-    );
-  }
-
-  // Define the base group of this table. Fields that don't have a group defined
-  // will go into this field by default.
-  $data['comment_entity_statistics']['table']['group']  = t('Comment Statistics');
-
-  // Provide a relationship for each entity type except comment.
-  foreach ($entities_types as $type => $entity_type) {
-    if ($type == 'comment' || !$entity_type->isSubclassOf('\Drupal\Core\Entity\ContentEntityInterface') || !$entity_type->getBaseTable()) {
-      continue;
-    }
-    // This relationship does not use the 'field id' column, if the entity has
-    // multiple comment-fields, then this might introduce duplicates, in which
-    // case the site-builder should enable aggregation and SUM the comment_count
-    // field. We cannot create a relationship from the base table to
-    // {comment_entity_statistics} for each field as multiple joins between
-    // the same two tables is not supported.
-    if (\Drupal::service('comment.manager')->getFields($type)) {
-      $data['comment_entity_statistics']['table']['join'][$entity_type->getBaseTable()] = array(
-        'type' => 'INNER',
-        'left_field' => $entity_type->getKey('id'),
-        'field' => 'entity_id',
-        'extra' => array(
-          array(
-            'field' => 'entity_type',
-            'value' => $type,
-          ),
-        ),
-      );
-    }
-  }
-
-  $data['comment_entity_statistics']['last_comment_timestamp'] = array(
-    'title' => t('Last comment time'),
-    'help' => t('Date and time of when the last comment was posted.'),
-    'field' => array(
-      'id' => 'comment_last_timestamp',
-    ),
-    'sort' => array(
-      'id' => 'date',
-    ),
-    'filter' => array(
-      'id' => 'date',
-    ),
-  );
-
-  $data['comment_entity_statistics']['last_comment_name'] = array(
-    'title' => t("Last comment author"),
-    'help' => t('The name of the author of the last posted comment.'),
-    'field' => array(
-      'id' => 'comment_ces_last_comment_name',
-      'no group by' => TRUE,
-    ),
-    'sort' => array(
-      'id' => 'comment_ces_last_comment_name',
-      'no group by' => TRUE,
-    ),
-  );
-
-  $data['comment_entity_statistics']['comment_count'] = array(
-    'title' => t('Comment count'),
-    'help' => t('The number of comments an entity has.'),
-    'field' => array(
-      'id' => 'numeric',
-    ),
-    'filter' => array(
-      'id' => 'numeric',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-    'argument' => array(
-      'id' => 'standard',
-    ),
-  );
-
-  $data['comment_entity_statistics']['last_updated'] = array(
-    'title' => t('Updated/commented date'),
-    'help' => t('The most recent of last comment posted or entity updated time.'),
-    'field' => array(
-      'id' => 'comment_ces_last_updated',
-      'no group by' => TRUE,
-    ),
-    'sort' => array(
-      'id' => 'comment_ces_last_updated',
-      'no group by' => TRUE,
-    ),
-    'filter' => array(
-      'id' => 'comment_ces_last_updated',
-    ),
-  );
-
-  $data['comment_entity_statistics']['cid'] = array(
-    'title' => t('Last comment CID'),
-    'help' => t('Display the last comment of an entity'),
-    'relationship' => array(
-      'title' => t('Last comment'),
-      'help' => t('The last comment of an entity.'),
-      'group' => t('Comment'),
-      'base' => 'comment',
-      'base field' => 'cid',
-      'id' => 'standard',
-      'label' => t('Last Comment'),
-    ),
-  );
-
-  $data['comment_entity_statistics']['last_comment_uid'] = array(
-    'title' => t('Last comment uid'),
-    'help' => t('The User ID of the author of the last comment of an entity.'),
-    'relationship' => array(
-      'title' => t('Last comment author'),
-      'base' => 'users',
-      'base field' => 'uid',
-      'id' => 'standard',
-      'label' => t('Last comment author'),
-    ),
-    'filter' => array(
-      'id' => 'numeric',
-    ),
-    'argument' => array(
-      'id' => 'numeric',
-    ),
-    'field' => array(
-      'id' => 'numeric',
-    ),
-  );
-
-  $data['comment_entity_statistics']['entity_type'] = array(
-    'title' => t('Entity type'),
-    'help' => t('The entity type to which the comment is a reply to.'),
-    'field' => array(
-      'id' => 'standard',
-    ),
-    'filter' => array(
-      'id' => 'string',
-    ),
-    'argument' => array(
-      'id' => 'string',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-  );
-  $data['comment_entity_statistics']['field_name'] = array(
-    'title' => t('Comment field name'),
-    'help' => t('The field name from which the comment originated.'),
-    'field' => array(
-      'id' => 'standard',
-    ),
-    'filter' => array(
-      'id' => 'string',
-    ),
-    'argument' => array(
-      'id' => 'string',
-    ),
-    'sort' => array(
-      'id' => 'standard',
-    ),
-  );
-
-  return $data;
-}
-
-/**
  * Implements hook_views_data_alter().
  */
 function comment_views_data_alter(&$data) {
diff --git a/core/modules/comment/src/CommentAccessControlHandler.php b/core/modules/comment/src/CommentAccessControlHandler.php
index c88c4f2..e4626d3 100644
--- a/core/modules/comment/src/CommentAccessControlHandler.php
+++ b/core/modules/comment/src/CommentAccessControlHandler.php
@@ -34,24 +34,16 @@ protected function checkAccess(EntityInterface $entity, $operation, $langcode, A
 
     switch ($operation) {
       case 'view':
-        return AccessResult::allowedIfHasPermission($account, 'access comments')
-          ->andIf(AccessResult::allowedIf($entity->isPublished()))
-          ->andIf(AccessResult::allowedIf($entity->getCommentedEntity()->access($operation, $account, TRUE)))
-          ->cachePerRole()->cacheUntilEntityChanges($entity);
-
+        return AccessResult::allowedIf($account->hasPermission('access comments') && $entity->isPublished())->cachePerRole()->cacheUntilEntityChanges($entity)
+          ->andIf($entity->getCommentedEntity()->access($operation, $account, TRUE));
       case 'update':
-        return AccessResult::allowedIfHasPermission($account, 'edit own comments')
-          ->andIf(AccessResult::allowedIf($account->id() && $account->id() == $entity->getOwnerId() && $entity->isPublished()))
-          ->cachePerRole()->cachePerUser()->cacheUntilEntityChanges($entity);
-
+        return AccessResult::allowedIf($account->id() && $account->id() == $entity->getOwnerId() && $entity->isPublished() && $account->hasPermission('edit own comments'))->cachePerRole()->cachePerUser()->cacheUntilEntityChanges($entity);
       case 'publish':
         return AccessResult::allowedIfHasPermission($account, 'administer comments');
         break;
-
       case 'unpublish':
         return AccessResult::allowedIfHasPermission($account, 'administer comments');
         break;
-
       default:
         // No opinion.
         return AccessResult::neutral()->cachePerRole();
@@ -108,8 +100,7 @@ protected function checkFieldAccess($operation, FieldDefinitionInterface $field_
       // fields on comment creation.
       if (in_array($field_definition->getName(), ['name', 'mail', 'homepage'], TRUE)) {
         $admin_access = AccessResult::allowedIfHasPermission($account, 'administer comments');
-        $anonymous_access = AccessResult::allowedIfHasPermission($account, 'post comments')
-          ->andIf(AccessResult::allowedIf($entity->isNew() && $account->isAnonymous() && $anonymous_contact != COMMENT_ANONYMOUS_MAYNOT_CONTACT))
+        $anonymous_access = AccessResult::allowedIf($entity->isNew() && $account->isAnonymous() && $anonymous_contact != COMMENT_ANONYMOUS_MAYNOT_CONTACT && $account->hasPermission('post comments'))
           ->cachePerRole()
           ->cacheUntilEntityChanges($entity)
           ->cacheUntilEntityChanges($field_definition->getConfig($commented_entity->bundle()))
@@ -122,11 +113,9 @@ protected function checkFieldAccess($operation, FieldDefinitionInterface $field_
       // Admins can view any fields except hostname, other users need both the
       // "access comments" permission and for the comment to be published. The
       // mail field is hidden from non-admins.
-      $admin_access = AccessResult::allowedIfHasPermission($account, 'administer comments')
-        ->andIf(AccessResult::allowedIf($field_definition->getName() != 'hostname'))
+      $admin_access = AccessResult::allowedIf($account->hasPermission('administer comments') && $field_definition->getName() != 'hostname')
         ->cachePerRole();
-      $anonymous_access = AccessResult::allowedIfHasPermission($account, 'access comments')
-        ->andIf(AccessResult::allowedIf($entity->isPublished() && !in_array($field_definition->getName(), array('mail', 'hostname'), TRUE)))
+      $anonymous_access = AccessResult::allowedIf($account->hasPermission('access comments') && $entity->isPublished() && !in_array($field_definition->getName(), array('mail', 'hostname'), TRUE))
         ->cacheUntilEntityChanges($entity)
         ->cachePerRole();
       return $admin_access->orIf($anonymous_access);
diff --git a/core/modules/comment/src/CommentStorage.php b/core/modules/comment/src/CommentStorage.php
index 7a27c06..ece537a 100644
--- a/core/modules/comment/src/CommentStorage.php
+++ b/core/modules/comment/src/CommentStorage.php
@@ -25,7 +25,6 @@
  */
 class CommentStorage extends SqlContentEntityStorage implements CommentStorageInterface {
 
-
   /**
    * The current user.
    *
@@ -322,48 +321,6 @@ public function loadThread(EntityInterface $entity, $field_name, $mode, $comment
   /**
    * {@inheritdoc}
    */
-  public function getSchema() {
-    $schema = parent::getSchema();
-
-    // Marking the respective fields as NOT NULL makes the indexes more
-    // performant.
-    $schema['comment_field_data']['fields']['created']['not null'] = TRUE;
-    $schema['comment_field_data']['fields']['thread']['not null'] = TRUE;
-
-    unset($schema['comment_field_data']['indexes']['comment_field__pid__target_id']);
-    unset($schema['comment_field_data']['indexes']['comment_field__entity_id__target_id']);
-    $schema['comment_field_data']['indexes'] += array(
-      'comment__status_pid' => array('pid', 'status'),
-      'comment__num_new' => array(
-        'entity_id',
-        'entity_type',
-        'comment_type',
-        'status',
-        'created',
-        'cid',
-        'thread',
-      ),
-      'comment__entity_langcode' => array(
-        'entity_id',
-        'entity_type',
-        'comment_type',
-        'default_langcode',
-      ),
-      'comment__created' => array('created'),
-    );
-    $schema['comment_field_data']['foreign keys'] += array(
-      'comment__author' => array(
-        'table' => 'users',
-        'columns' => array('uid' => 'uid'),
-      ),
-    );
-
-    return $schema;
-  }
-
-  /**
-   * {@inheritdoc}
-   */
   public function getUnpublishedCount() {
     return  $this->database->select('comment_field_data', 'c')
       ->condition('status', CommentInterface::NOT_PUBLISHED, '=')
@@ -373,6 +330,4 @@ public function getUnpublishedCount() {
       ->fetchField();
   }
 
-  public function updateEntityStatistics(CommentInterface $comment) {}
-
 }
diff --git a/core/modules/comment/src/CommentStorageInterface.php b/core/modules/comment/src/CommentStorageInterface.php
index 6d9aa75..b20456f 100644
--- a/core/modules/comment/src/CommentStorageInterface.php
+++ b/core/modules/comment/src/CommentStorageInterface.php
@@ -110,23 +110,6 @@ public function loadThread(EntityInterface $entity, $field_name, $mode, $comment
   /**
    * Updates the comment statistics for a given node.
    *
-   * The {comment_entity_statistics} table has the following fields:
-   * - last_comment_timestamp: The timestamp of the last comment for the entity,
-   *   or the entity created timestamp if no comments exist for the entity.
-   * - last_comment_name: The name of the anonymous poster for the last comment.
-   * - last_comment_uid: The user ID of the poster for the last comment for
-   *   this entity, or the entity author's user ID if no comments exist for the
-   *   entity.
-   * - comment_count: The total number of published comments on this entity.
-   *
-   * @param \Drupal\comment\CommentInterface $comment
-   *   The comment being saved.
-   */
-  public function updateEntityStatistics(CommentInterface $comment);
-
-  /**
-   * Returns the number of unpublished comments.
-   *
    * @return int
    *   The number of unpublished comments.
    */
diff --git a/core/modules/comment/src/CommentViewBuilder.php b/core/modules/comment/src/CommentViewBuilder.php
index 1682aba..9d3c3e2 100644
--- a/core/modules/comment/src/CommentViewBuilder.php
+++ b/core/modules/comment/src/CommentViewBuilder.php
@@ -273,16 +273,14 @@ protected static function buildLinks(CommentInterface $entity, EntityInterface $
       if (!$entity->isPublished() && $entity->access('publish')) {
         $links['comment-publish'] = array(
           'title' => t('Publish'),
-          'route_name' => 'comment.publish',
-          'route_parameters' => array('comment' => $entity->id()),
+          'url' => Url::fromRoute('comment.publish', ['comment' => $entity->id()]),
           'html' => TRUE,
         );
       }
       if ($entity->isPublished() && $entity->access('unpublish')) {
         $links['comment-unpublish'] = array(
           'title' => t('Unpublish'),
-          'route_name' => 'comment.unpublish',
-          'route_parameters' => array('comment' => $entity->id()),
+          'url' => Url::fromRoute('comment.unpublish', ['comment' => $entity->id()]),
           'html' => TRUE,
         );
       }
diff --git a/core/modules/comment/src/Plugin/views/field/LinkApprove.php b/core/modules/comment/src/Plugin/views/field/LinkPublish.php
similarity index 100%
rename from core/modules/comment/src/Plugin/views/field/LinkApprove.php
rename to core/modules/comment/src/Plugin/views/field/LinkPublish.php
diff --git a/core/modules/comment/src/Tests/CommentAdminTest.php b/core/modules/comment/src/Tests/CommentAdminTest.php
index 5c63316..db6b769 100644
--- a/core/modules/comment/src/Tests/CommentAdminTest.php
+++ b/core/modules/comment/src/Tests/CommentAdminTest.php
@@ -96,9 +96,9 @@ function testContentAdminPages() {
   }
 
   /**
-   * Tests comment publish functionality through the node interface.
+   * Tests comment approval functionality through the node interface.
    */
-  function testPublishNodeInterface() {
+  function testApprovalNodeInterface() {
     // Set anonymous comments to require approval.
     user_role_change_permissions(DRUPAL_ANONYMOUS_RID, array(
       'access comments' => TRUE,
diff --git a/core/modules/comment/src/Tests/CommentNonNodeTest.php b/core/modules/comment/src/Tests/CommentNonNodeTest.php
index 7fcbb67..302d47b 100644
--- a/core/modules/comment/src/Tests/CommentNonNodeTest.php
+++ b/core/modules/comment/src/Tests/CommentNonNodeTest.php
@@ -213,7 +213,7 @@ function performCommentOperation($comment, $operation, $unpublished = FALSE) {
   }
 
   /**
-   * Gets the comment ID for an unapproved (unpublished) comment.
+   * Gets the comment ID for an unpublished comment.
    *
    * @param string $subject
    *   Comment subject to find.
