# Debugger.Source A `Debugger.Source` instance represents either a piece of JavaScript source code or the serialized text of a block of WebAssembly code. The two cases are distinguished by the latter having its `introductionType` property always being `"wasm"` and the former having its `introductionType` property never being `"wasm"`. Each [`Debugger`][debugger-object] instance has a separate collection of `Debugger.Source` instances representing the source code that has been presented to the system. A debugger may place its own properties on `Debugger.Source` instances, to store metadata about particular pieces of source code. ## Debugger.Source for JavaScript For a `Debugger.Source` instance representing a piece of JavaScript source code, its properties provide the source code itself as a string, and describe where it came from. Each [`Debugger.Script`][script] instance refers to the `Debugger.Source` instance holding the source code from which it was produced. If a single piece of source code contains both top-level code and function definitions, perhaps with nested functions, then the [`Debugger.Script`][script] instances for those all refer to the same `Debugger.Source` instance. Each script indicates the substring of the overall source to which it corresponds. A `Debugger.Source` instance may represent only a portion of a larger source document. For example, an HTML document can contain JavaScript in multiple `