Use snake case instead of camel case for AST constructors
Resolve circular dependencies and snake case constructors