diff --git a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/K2ReplCompiler.kt b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/K2ReplCompiler.kt
index d266785..ef26f40 100644
--- a/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/K2ReplCompiler.kt
+++ b/plugins/scripting/scripting-compiler/src/org/jetbrains/kotlin/scripting/compiler/plugin/impl/K2ReplCompiler.kt
@@ -261,6 +261,16 @@
             allSourceFiles,
             initialScriptCompilationConfiguration
         )
+
+    // CM: Unclear exactly what this does exactly, but it seems to allow us to use updateClasspath
+    // Without this, using `updateClasspath` doesn't work either
+    val (refineSourceFiles, newSourceDeps) = collectRefinedSourcesAndUpdateEnvironment(
+        state.compilerContext,
+        snippetKtFile,
+        initialScriptCompilationConfiguration,
+        messageCollector
+    )
+
     allSourceFiles.addAll(newSources)
 
     var hasSyntaxErrors = false
diff --git a/plugins/scripting/scripting-tests/test/org/jetbrains/kotlin/scripting/test/repl/example/exampleRepl.kt b/plugins/scripting/scripting-tests/test/org/jetbrains/kotlin/scripting/test/repl/example/exampleRepl.kt
index b66eba4..440f7a4 100644
--- a/plugins/scripting/scripting-tests/test/org/jetbrains/kotlin/scripting/test/repl/example/exampleRepl.kt
+++ b/plugins/scripting/scripting-tests/test/org/jetbrains/kotlin/scripting/test/repl/example/exampleRepl.kt
@@ -24,6 +24,7 @@
 import org.jetbrains.kotlin.scripting.compiler.plugin.repl.configuration.ConsoleReplConfiguration
 import org.jetbrains.kotlin.scripting.compiler.plugin.repl.configuration.ReplConfiguration
 import org.jetbrains.kotlin.test.services.StandardLibrariesPathProviderForKotlinProject
+import java.io.File
 import kotlin.script.experimental.api.*
 import kotlin.script.experimental.host.toScriptSource
 import kotlin.script.experimental.impl.internalScriptingRunSuspend
@@ -31,8 +32,18 @@
 import kotlin.script.experimental.jvm.jvm
 import kotlin.script.experimental.jvm.updateClasspath
 import kotlin.script.experimental.jvm.util.isIncomplete
+import kotlin.script.experimental.jvm.withUpdatedClasspath
 import kotlin.script.experimental.util.LinkedSnippet
 
+@Target(AnnotationTarget.FILE)
+@Repeatable
+@Retention(AnnotationRetention.SOURCE)
+annotation class DependsOn(val value: String = "")
+
+class ReplBaseClass() {
+    fun helloFromBase() = println("Hello World")
+}
+
 /**
  * Test K2 REPL implementation. Very Experimental! Do not use! May break at any moment!
  */
@@ -56,12 +67,28 @@
     private val messageCollector = ScriptDiagnosticsMessageCollector(ReplMessageCollector(replConfiguration))
     private var lineCounter = 0
 
+    val mutableClassPath: MutableList<File> = mutableListOf()
+
+    fun onAnnotationsHandler(context: ScriptConfigurationRefinementContext): ResultWithDiagnostics<ScriptCompilationConfiguration> {
+         mutableClassPath.add(File("/Users/christian.melchior/JetBrains/kotlin-jupyter-2/src/test/testData/kernelTestPackage-1.0.jar"))
+        return context.compilationConfiguration.withUpdatedClasspath(listOf<File>(
+            File("/Users/christian.melchior/JetBrains/kotlin-jupyter-2/src/test/testData/kernelTestPackage-1.0.jar")
+        )).asSuccess()
+    }
+
     private val scriptCompilationConfiguration = ScriptCompilationConfiguration {
         jvm {
             updateClasspath(
-                listOf(StandardLibrariesPathProviderForKotlinProject.runtimeJarForTests())
+                listOf(
+                    StandardLibrariesPathProviderForKotlinProject.runtimeJarForTests(),
+                    File("/Users/christian.melchior/JetBrains/kotlin/plugins/scripting/scripting-tests/build/classes/kotlin/test"),
+                )
             )
         }
+        implicitReceivers(ReplBaseClass::class)
+        refineConfiguration {
+            onAnnotations(DependsOn::class, handler = ::onAnnotationsHandler)
+        }
     }
 
     private val replCompiler =
@@ -78,6 +105,7 @@
             jvm {
                 baseClassLoader( ExampleRepl::class.java.classLoader)
             }
+            implicitReceivers.invoke(ReplBaseClass())
         }
 
     val replEvaluator = K2ReplEvaluator()
@@ -166,6 +194,7 @@
                 repl {
                     currentLineId(lineId)
                 }
+                updateClasspath(mutableClassPath)
             }
         )
     }
