   (println "mc/many-constructors th NUM        : list classes with NUM or more constructors")
   (println "mcp/many-constructor-params th NUM : list constructors with NUM or more parameters")
   (println "f/finalizers                       : list classes that use finalizers")
+  (println "st/singletons                      : list singletons")
   (interactive state))
 
 (defn- load-classes [ast]

  (printOperation finalizersOp (:cus state) nil)
  (interactive state))

(defn- process [state input]
  (let
   [ast (command-parser input)]


(def commands-grammar
  (str
   "<COMMAND> = HELP | EXIT | LOAD | LIST | MC | MCP | F | ST   \n"
   "HELP = 'help' | 'h'                                         \n"
   "EXIT = 'exit' | 'quit' | 'q'                                \n"
   "LOAD = 'load' <WS> STR                                      \n"
   "LIST = 'list'                                               \n"
   "MC  = ('mc'|'many-constructors') <WS> 'th' <WS> NUM         \n"
   "MCP = ('mcp'|'many-costructor-params') <WS> 'th' <WS> NUM   \n"
   "F = ('f'|'finalizers')                                      \n"
   "ST = ('st'|'singletons')                                    \n"
   "WS  = #'[\t ]+'                                             \n"
   "NUM = #'[0-9]+'                                             \n"
   "STR = #'\"[^\"]*\"'                                         \n"))

(def command-parser
  (insta/parser commands-grammar))
