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


  return result

RW.visitSplitterChip = (circuitMeta, path, chip, constants, circuitData, 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)
      result.append(childResult)
  return result

RW.visitEmitterChip = (circuitMeta, path, chip, constants, circuitData, bindings) ->
  evaluationContext = RW.makeEvaluationContext(circuitMeta, constants, circuitData, bindings)

  # Return "DONE" signal, so it can be put in sequences
  result = new RW.ChipVisitorResult(RW.signals.DONE)  


  return result

RW.visitPipeChip = (circuitMeta, path, chip, constants, circuitData, oldScratchData, oldBindings) ->
  # Create new scratch data
  scratchKey = _.unique("scratch")

  # Put new scratch data in an object to use applyPatches() later
  scratchParent =
    scratch: RW.addToObject(oldScratchData, scratchKey, chip.pipe.initialValue or null)

  # Create new bindings, pointing to the scratch data
  newBindings = Object.create(oldBindings)
  newBindings[chip.pipe.bindTo] = new RW.BindingReference("scratch.#{scratchKey}")

  # Prepare result and logger
  result = new RW.ChipVisitorResult()
