         translation: nameTranslate ctx, atom, symbol
       }
     else
-      # log "deferring in rhs for #{symbol}"
+      log "deferring in rhs for #{symbol}", ctx.scopes
       ctx.doDefer atom, symbol
-      translation: 'deferred'
+      translation: deferredExpression()
 
 constPattern = (ctx, symbol) ->
   exp = ctx.assignTo()
   precs: [(cond_ switch symbol
-      when 'True' then "#{exp}"
-      when 'False' then "!#{exp}"
+      when 'True' then exp
+      when 'False' then (jsUnary "!", exp)
       else
-        "#{exp} instanceof #{symbol}")]
+        (jsBinary "instanceof", exp, (validIdentifier symbol)))]
 
 nameTranslate = (ctx, atom, symbol) ->
   if atom.label is 'const'

  compiledElems =
    if ctx.assignTo()
      for elem, i in elems
        ctx.setAssignTo "#{ctx.assignTo()}[#{i}]"
        elemCompiled = expressionCompile ctx, elem
        ctx.resetAssignTo()
        elemCompiled

      when 'True' then 'true'
      when 'False' then 'false'
      else
        (jsAccess (validIdentifier symbol), "value")
  else
    validIdentifier symbol

numericalCompile = (ctx, symbol) ->
  translation = if symbol[0] is '~' then (jsUnary "-", symbol) else symbol
  type: toConstrained typeConstant 'Num'
  translation: translation
  pattern: literalPattern ctx, translation
