     } else {
       return #{elz};
     }}())"""
+  'call': (method, obj, args...) ->
+    # TODO: use dot notation if method is valid method name
+    """((#{obj})[#{method}](#{args.join ', '}))"""
 
 trueMacros =
   'match': (onwhat, cases...) ->

    mainCache = mainCache.map ({cache}) -> compileAssign cache
    varDecls = if varNames.length > 0 then ["var #{varNames.join ', '};"] else []
    content = mainCache.concat(varDecls, compiledCases.join '').join '\n'

    """(function(){
      #{content}}())"""


      #['typename', /^[A-Z]/.test token]
      ['label', /\w*:$/.test token]
      ['string', /^["']/.test token]
      ['regex', /^\/[^ \/]/.test token]
      ['paren', token in ['(', ')']]
      ['bracket', token in ['[', ']']]

