- Fix #5, implement multiple arity to single arity reduction
- Walk the AST collecting the arities of fns and the arities of call sites
- If a function is ever the target of an apply, it cannot be lifted to methods or multiple functions as the arity cannot be statically determined. Tag these fns and collect all others.
- Rewrite each fn into N fns of a single arity, updating the rest of the AST as appropriate so that all invocations statically dispatch to a single arity except where impossible due to application of apply.
- Fix #3, implement called by what analysis
- Fix #6, implement var as value analysis
- Fix #7, implement a gensym wrapper with metadata
- Fix #9, implement macro discarding