     !!@_scope().definition
 
   isAtDefinition: ->
-    (definition = @_currentDefinition()) and definition.inside is 0
+    (definition = @_currentDefinition()) and definition.pattern and definition.inside is 0
 
   isAtSimpleDefinition: ->
     @isAtDefinition() and @definitionName()
 
-  isAtDeferrableDefinition: ->
-    @isAtDefinition() and @_currentDefinition().deferrable
+  # isAtDeferrableDefinition: ->
+  #   @isAtDefinition() and @_currentDefinition().deferrable
 
   # isInsideSimpleDefinition: ->
   #   (definition = @_currentDefinition())

      deferrable: yes
      _defer: undefined

  defineNonDeferrablePattern: (pattern) ->
    definition = @definePattern pattern
    definition.deferrable = no


compileCtxAstToJs = (compileFn, ctx, ast) ->
  ir = compileFn ctx, ast
  if ir
    jsIr = translateIr ctx, ir
    js = (if Array.isArray jsIr
        translateStatementsToJs
      else
        translateToJs) jsIr
  {ctx, ast, js}

astizeList = (source) ->
