// SPDX-License-Identifier: EPL-2.0 and Apache-2.0
// These patches apply to JaCoCo (https://github.com/jacoco/jacoco) and are hereby made available under the terms of the
// Eclipse Public License 2.0 available at:
//   http://www.eclipse.org/legal/epl-2.0
diff --git org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java
index 0cc06ada..b65efb03 100644
--- org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java
+++ org.jacoco.core/src/org/jacoco/core/analysis/Analyzer.java
@@ -31,6 +31,8 @@ import org.jacoco.core.internal.analysis.ClassCoverageImpl;
 import org.jacoco.core.internal.analysis.StringPool;
 import org.jacoco.core.internal.data.CRC64;
 import org.jacoco.core.internal.flow.ClassProbesAdapter;
+import org.jacoco.core.internal.flow.ClassProbesVisitor;
+import org.jacoco.core.internal.flow.IClassProbesAdapterFactory;
 import org.jacoco.core.internal.instr.InstrSupport;
 import org.objectweb.asm.ClassReader;
 import org.objectweb.asm.ClassVisitor;
@@ -52,6 +54,8 @@ public class Analyzer {
 
 	private final StringPool stringPool;
 
+	private final IClassProbesAdapterFactory classProbesAdapterFactory;
+
 	/**
 	 * Creates a new analyzer reporting to the given output.
 	 *
@@ -63,9 +67,21 @@ public class Analyzer {
 	 */
 	public Analyzer(final ExecutionDataStore executionData,
 			final ICoverageVisitor coverageVisitor) {
+		this(executionData, coverageVisitor, new IClassProbesAdapterFactory() {
+			@Override
+			public ClassProbesAdapter makeClassProbesAdapter(ClassProbesVisitor cv, boolean trackFrames) {
+				return new ClassProbesAdapter(cv, trackFrames);
+			};
+		});
+	}
+
+	public Analyzer(final ExecutionDataStore executionData,
+			final ICoverageVisitor coverageVisitor,
+			final IClassProbesAdapterFactory classProbesAdapterFactory) {
 		this.executionData = executionData;
 		this.coverageVisitor = coverageVisitor;
 		this.stringPool = new StringPool();
+		this.classProbesAdapterFactory = classProbesAdapterFactory;
 	}
 
 	/**
@@ -99,7 +115,7 @@ public class Analyzer {
 				coverageVisitor.visitCoverage(coverage);
 			}
 		};
-		return new ClassProbesAdapter(analyzer, false);
+		return classProbesAdapterFactory.makeClassProbesAdapter(analyzer, false);
 	}
 
 	private void analyzeClass(final byte[] source) {
diff --git org.jacoco.core/src/org/jacoco/core/internal/flow/IClassProbesAdapterFactory.java org.jacoco.core/src/org/jacoco/core/internal/flow/IClassProbesAdapterFactory.java
new file mode 100644
index 00000000..45fc2709
--- /dev/null
+++ org.jacoco.core/src/org/jacoco/core/internal/flow/IClassProbesAdapterFactory.java
@@ -0,0 +1,6 @@
+package org.jacoco.core.internal.flow;
+
+public interface IClassProbesAdapterFactory {
+	ClassProbesAdapter makeClassProbesAdapter(ClassProbesVisitor cv,
+			boolean trackFrames);
+}
