   return false unless expected.location.first_line is actual.location.first_line
 
   switch expected.type
-    when "before", "after"
+    when "before", "after", "enter"
       varsEq(expected.vars, actual.vars)
-    when "enter"
-      varsEq(expected.args, actual.args)
     when "leave"
       varsEq({returnVal: expected.returnVal, thrownErr: expected.thrownErr},
              {returnVal: actual.returnVal, thrownErr: actual.thrownErr})

    type += " " unless type is "before"
    vars =
      switch event.type
        when "before", "after" then event.vars
        when "enter" then event.args
        when "leave"
          if "returnVal" of event
            { "return": event.returnVal }

  event.type = matches[3]
  event.location = { first_line: parseInt(matches[2], 10) }
  switch event.type
    when "before", "after", "enter"
      event.vars = vars
    when "leave"
      if "return" of vars
        event.returnVal = vars.return
