 
   setName: (expression) ->
     @names.push
-      name: expression.token
+      name: expression?.token
       expression: expression
       deferredBindings: []
       definedNames: []

        requiredElems++

    if hasSplat and requiredElems is 0
      return malformed 'Matching on sequences requires at least one element name', form

    compiledArgs = (for elem, i in elems
      [lhs, rhs] =

  args = _labeled _arguments call
  labeledArgs = labeledToMap args

  if tagFreeLabels args
    return malformed 'labels without values inside call', call

  paramNames = ctx.arity operator.token
  if not paramNames
    log "deferring in known call #{operator.token}"
    ctx.setDefer operator.token
    return 'deferred'
  positionalParams = filter ((param) -> not (lookupInMap labeledArgs, param)), paramNames
  nonLabeledArgs = map _snd, filter (([label, value]) -> not label), args

