       # The `1`s are to remove the `#` in `#{`.
       [line, column] = @getLineAndColumnFromChunk offsetInChunk + 1
       {tokens: nested, index} =
-        new Lexer().doTokenize str[1..], line: line, column: column, untilBalanced: on
+        outerLexer.clone().tokenize str[1..], line: line, column: column, untilBalanced: on
       # Skip the trailing `}`.
       index += 1
 

    code = code.replace m, (m, start, line)=>
      # @@console.log @@JSON.stringify { m, start, line }
      # compiler = @compiler.clone() # Generate a subcompiler
      @ .> compiler
      # console.log '@>' + line.replace(/^\S/, (m)-> ' @lexer.' + m)
      compiler.eval('@>' + line.replace(/^\S/, (m)-> ' @lexer.' + m)).call compiler
      start + line.replace /.+/g, (x)-> '# Processed: ' + x

  # This method allows us to have strings within interpolations within strings,
  # ad infinitum.
  matchWithInterpolations: (regex, delimiter) ->
    outerLexer = @
    tokens = []
    offsetInChunk = delimiter.length
    return null unless @chunk[...offsetInChunk] is delimiter
