             # Enforce MultiError with WirePattern (for group forwarding)
             exports.MultiError component, config.name, config.error, groups, scope
 
+            debug "WP: CALL WITH", data, groups, component.params, scope
+
             # Call the proc function
             if config.async
               postpone = ->

  # - string: forward groups of a specific port only
  # - array: forward unique groups of inports in the list
  config.forwardGroups = false unless 'forwardGroups' of config
  # Receive streams feature
  config.receiveStreams = false unless 'receiveStreams' of config
  if config.receiveStreams

    return outProxy[ports[0]]
  return outProxy

checkWirePatternPreconditions = (component, config, input, output) ->
  # First check for required params
  paramsMet = true
  inputsMet = true
  droppedPackets = false
  for param in config.params
    continue unless component.inPorts[param].isRequired()
    paramsMet = false unless input.hasData param
  # Then check actual input ports
  for port in config.inPorts
    unless input.hasData port
      inputsMet = false
      continue
    # If input port has data but param requirements are not
    # met, and we're in dropInput mode, read the data and
    # call done
    if config.dropInput and not paramsMet
      input.getData port
      droppedPackets = true

  output.done() if droppedPackets and not paramsMet
  return inputsMet and paramsMet

# Wraps OutPort in WirePattern to add transparent scope support
class OutPortWrapper
