diff --git a/theories/proofmode/ltac_tactics.v b/theories/proofmode/ltac_tactics.v
index 755952256579125bc097a9e97d95a88da9345ce5..b349b89140ead7624471ec63e6ff9efa17cb5c28 100644
--- a/theories/proofmode/ltac_tactics.v
+++ b/theories/proofmode/ltac_tactics.v
@@ -740,10 +740,11 @@ Tactic Notation "iPoseProofCoreLem"
   try iSolveTC.
 
 (** There is some hacky stuff going on here: because of Coq bug #6583, unresolved
-type classes in the arguments `xs` are resolved at arbitrary moments. Tactics
-like `apply`, `split` and `eexists` wrongly trigger type class search to resolve
-these holes. To avoid TC being triggered too eagerly, this tactic uses `refine`
-at most places instead of `apply`. *)
+type classes in e.g. the arguments [xs] of [iSpecializeArgs_go] are resolved at
+arbitrary moments. That is because tactics like [apply], [split] and [eexists]
+wrongly trigger type class search. To avoid TC being triggered too eagerly, the
+tactics below use [notypeclasses refine] instead of [apply], [split] and
+[eexists]. *)
 Local Ltac iSpecializeArgs_go H xs :=
   lazymatch xs with
   | hnil => idtac
@@ -866,7 +867,7 @@ Ltac iSpecializePat_go H1 pats :=
             let Hs' := iMissingHyps Hs' in
             fail "iSpecialize: hypotheses" Hs' "not found"
           | _ =>
-            split;
+            notypeclasses refine (conj _ _);
               [iFrame Hs_frame; solve_done d (*goal*)
               |iSpecializePat_go H1 pats]
           end]