 
   return result
 
-RW.visitSplitterChip = (circuitMeta, path, chip, constants, circuitData, oldBindings) ->
+RW.visitSplitterChip = (circuitMeta, path, chip, constants, circuitData, scratchData, oldBindings) ->
   bindingSet = RW.calculateBindingSet(circuitMeta, path, chip, constants, circuitData, oldBindings)
   result = new RW.ChipVisitorResult()
   for newBindings in bindingSet
     # Continue with children
     for childIndex, child of (chip.children or [])
-      childResult = RW.visitChip(circuitMeta, RW.appendToArray(path, childIndex), child, constants, circuitData, newBindings)
+      childResult = RW.visitChip(circuitMeta, RW.appendToArray(path, childIndex), child, constants, circuitData, scratchData, newBindings)
       result.append(childResult)
   return result
 
-RW.visitEmitterChip = (circuitMeta, path, chip, constants, circuitData, bindings) ->
-  evaluationContext = RW.makeEvaluationContext(circuitMeta, constants, circuitData, bindings)
+RW.visitEmitterChip = (circuitMeta, path, chip, constants, circuitData, scratchData, bindings) ->
+  evaluationContext = RW.makeEvaluationContext(circuitMeta, constants, circuitData, scratchData, bindings)
 
   # Return "DONE" signal, so it can be put in sequences
   result = new RW.ChipVisitorResult(RW.signals.DONE)  


  return bindingSet

RW.visitProcessorChip = (circuitMeta, path, chip, constants, circuitData, bindings) ->
  if chip.processor not of constants.processors then throw RW.makeExecutionError("Cannot find processor '#{chip.processor}'", circuitMeta, path)

  processor = constants.processors[chip.processor]

  RW.transformersLogger = RW.makeLogFunction(circuitMeta, path, result)

  # Make circuitData for child, based on pins
  evaluationContext = RW.makeEvaluationContext(circuitMeta, constants, parentCircuitData, scratchData, bindings)
  try
    childCircuitData = RW.evaluateInputPinExpressions(circuitMeta, path, constants, evaluationContext, circuit.pinDefs, chip.pins)
  catch e
