+/* ... ck_scope ............................................................ */
+
+STATIC OP *(*indirect_old_ck_scope) (pTHX_ OP *) = 0;
+STATIC OP *(*indirect_old_ck_lineseq)(pTHX_ OP *) = 0;
+
+STATIC OP *indirect_ck_scope(pTHX_ OP *o) {
+ OP *(*old_ck)(pTHX_ OP *) = 0;
+
+ switch (o->op_type) {
+ case OP_SCOPE: old_ck = indirect_old_ck_scope; break;
+ case OP_LINESEQ: old_ck = indirect_old_ck_lineseq; break;
+ }
+ o = CALL_FPTR(old_ck)(aTHX_ o);
+
+ if (indirect_hint()) {
+ indirect_map_store(o, PL_oldbufptr, NULL, CopLINE(&PL_compiling));
+ return o;
+ }
+
+ indirect_map_delete(o);
+ return o;
+}
+
+/* ... ck_leave ............................................................ */
+
+STATIC OP *(*indirect_old_ck_leave)(pTHX_ OP *) = 0;
+
+STATIC OP *indirect_ck_leave(pTHX_ OP *o) {
+ o = CALL_FPTR(indirect_old_ck_leave)(aTHX_ o);
+
+ /* Cleanup relevant entries in case ck_method catches them later. */
+ indirect_map_delete(o);
+ return o;
+}
+