refactor to support generic types
refactored MacroToolbox
added tests for ADT,enum and generics
minor refactor