         if group of groupSubs
           for rule in groupSubs[group]
             @processInput rule, output, group, groupSubs
+
+  compile: ->
+    result =
+      targets: {}
 
 ###
 # Make sure to always include `$1` in the replacement

    for rule in @rootMist.rules
      rule.targets = {}

  emitGroupOutput: (group, output)->
    (@groupRefs[group] = @groupRefs[group] || []).push output

  ###
  # Generates templates for dependencies and outputs
  ###

          else
            throw "unknown input type: #{input.type}"

  ###
  # Gives a single input to a rule for processing
  #
  # rule:
  #   The rule for which to create a target based on the input
  # input:
  #   The input for which to create a target
  # group:
  #   A group, if any, that triggered the input
  # groupSubs:
  #   A dictionary of group=>rules that are subscribed to receive
  #   target outputs as inputs to process
  ###
  processInput: (rule, input, group, groupSubs = {})->
    return if input of rule.targets

