diff --git a/polygerrit-ui/app/BUILD b/polygerrit-ui/app/BUILD
index a825009..4cafc7c 100644
--- a/polygerrit-ui/app/BUILD
+++ b/polygerrit-ui/app/BUILD
@@ -132,7 +132,6 @@
     "elements/shared/gr-comment-thread/gr-comment-thread_html.ts",
     "elements/shared/gr-comment/gr-comment_html.ts",
     "elements/shared/gr-dropdown-list/gr-dropdown-list_html.ts",
-    "elements/shared/gr-hovercard-account/gr-hovercard-account_html.ts",
 ]
 
 sources_for_template_checking = glob(
diff --git a/polygerrit-ui/app/elements/shared/gr-hovercard-account/gr-hovercard-account.ts b/polygerrit-ui/app/elements/shared/gr-hovercard-account/gr-hovercard-account.ts
index b789bee..06272ed 100644
--- a/polygerrit-ui/app/elements/shared/gr-hovercard-account/gr-hovercard-account.ts
+++ b/polygerrit-ui/app/elements/shared/gr-hovercard-account/gr-hovercard-account.ts
@@ -131,7 +131,12 @@
     return getLastUpdate(this.account, change);
   }
 
-  _showReviewerOrCCActions(account?: AccountInfo, change?: ChangeInfo) {
+  /** 3rd parameter is just for *triggering* re-computation. */
+  _showReviewerOrCCActions(
+    account?: AccountInfo,
+    change?: ChangeInfo,
+    _?: unknown
+  ) {
     return !!this._selfAccount && isRemovableReviewer(change, account);
   }
 
@@ -212,18 +217,38 @@
       });
   }
 
-  _computeShowLabelNeedsAttention() {
+  /** Parameters are just for *triggering* re-computation. */
+  _computeShowLabelNeedsAttention(
+    _1: unknown,
+    _2: unknown,
+    _3: unknown,
+    _4: unknown
+  ) {
     return this.isAttentionEnabled && this.hasUserAttention;
   }
 
-  _computeShowActionAddToAttentionSet() {
+  /** Parameters are just for *triggering* re-computation. */
+  _computeShowActionAddToAttentionSet(
+    _1: unknown,
+    _2: unknown,
+    _3: unknown,
+    _4: unknown,
+    _5: unknown
+  ) {
     const involvedOrSelf =
       isInvolved(this.change, this._selfAccount) ||
       isSelf(this.account, this._selfAccount);
     return involvedOrSelf && this.isAttentionEnabled && !this.hasUserAttention;
   }
 
-  _computeShowActionRemoveFromAttentionSet() {
+  /** Parameters are just for *triggering* re-computation. */
+  _computeShowActionRemoveFromAttentionSet(
+    _1: unknown,
+    _2: unknown,
+    _3: unknown,
+    _4: unknown,
+    _5: unknown
+  ) {
     const involvedOrSelf =
       isInvolved(this.change, this._selfAccount) ||
       isSelf(this.account, this._selfAccount);
diff --git a/polygerrit-ui/app/elements/shared/gr-hovercard/gr-hovercard-behavior.ts b/polygerrit-ui/app/elements/shared/gr-hovercard/gr-hovercard-behavior.ts
index bbd1708..356a248 100644
--- a/polygerrit-ui/app/elements/shared/gr-hovercard/gr-hovercard-behavior.ts
+++ b/polygerrit-ui/app/elements/shared/gr-hovercard/gr-hovercard-behavior.ts
@@ -471,6 +471,7 @@
 
 export interface GrHovercardBehaviorInterface {
   _target: HTMLElement | null;
+  _isShowing: boolean;
   ready(): void;
   removeListeners(): void;
   debounceHide(): void;
