anchor.diff:  (function processText (text options mode)
     (var result (getInitialResult text options mode))
     (try
  -    (foreach line result.origLines
  -      (processLine result line))
  +    (forindex i 0 result.inputLines.length
  +      (set result.inputLineNo i)
  +      (processLine result i))
       (finalizeResult result)
       (function (e)
         (processError result e)))
  
positive.code: ;; Indentation functions
  ;;------------------------------------------------------------------------------
  
  (function splitLineForStability (result)
    (when (isCloseParen result.ch)
      (var line result.lines[result.lineNo])
      (var i (line.search NOT_SPACE_OR_CLOSE_PAREN))
      (when (&& (!= i -1) (!= line[i] ";"))
        (var lineA (line.substring 0 i))
        (var lineB (line.substring i))
        (set result.lines[result.lineNo] lineA)
        (insertLineAt result (+ result.lineNo 1) lineB)
        (set result.nextIndentDelta (+ result.indentDelta -i)))))
  
  (function correctIndent (result)
    (var origIndent result.x)
  
negative.code: 
    (commitChar result origCh))
  
  (function processLine (result lineNo)
    (initLine result result.inputLines[lineNo])
    (initIndent result)
  
    (setTabStops result)
  
    ;; NOTE: inputLines may be mutated inside the loop (i.e. when line-splitting occurs),
    ;; so we cannot use an aliased `line` reference since it may get stale.
    (forindex x 0 result.inputLines[lineNo].length
      (set result.inputX x)
      (processChar result result.inputLines[lineNo][x]))
  
    (processChar result NEWLINE)
  
    (var unmatchedX result.firstUnmatchedCloseParenX)
    (when (&& (!= unmatchedX SENTINEL_NULL)
  