This adds the following features: - `class` keyword support: checked by C++, mutated to struct for shader. - `private` and `public` keywords: checked by C++, removed for shader. - `static` methods. - `const` and non-const methods. What is not supported: - Constructors - Destructors - operators - Method definition outside of class definition - member reference without `this` keyword. This is implemented using a very simple lexer/parser allowing semantic traversal. Pull Request: https://projects.blender.org/blender/blender/pulls/144025