Add dirty hack to share context
Fix double binding
Fix function assign
Use body traverse
Use body traverse
Create type from constructor
Add guard from irregular situation
Add new and fix function call
Add generics(wip)