     @_macros[name.symbol] = macro
     name.id = macro.id = @freshId()
 
+  # Creates a deferrable definition to be associated with given pattern
   definePattern: (pattern) ->
     if @isDefining()
       throw new Error "already defining, forgot to leaveDefinition?"


    #log "ASSIGN #{ctx.definitionName()}", ctx.shouldDefer()
    if ctx.shouldDefer()
      ctx.addDeferredDefinition ctx.deferReason().concat [to, expression]
      return deferredExpression()

    if assigns.length is 0
      return malformed to, 'Not an assignable pattern'
    map compileVariableAssignment, (join translationCache, assigns)
  else
    translatedExpression

polymorphicAssignCompile = (ctx, expression, translatedExpression) ->
  assignCompileAs ctx, expression, translatedExpression, yes

  param: '#FDA947'
  comment: 'grey'
  operator: '#67B3DD'
  malformed: '#880000'
  normal: 'white'

colorize = (color, string) ->
