AST class hierarchy