removing std::list<T> inside AST nodes and replacing them with ASTList<T> to encapsulate generic lists