Visitor RBProgramNodeVisitor << #MyVisitor slots: { #counter }; tag: 'Visitors'; package: 'AST-Core' visitMessageNode: aNode counter := counter + 1. super visitMessageNode: aNode. MyVisitor new visit: (OrderedCollection>>#do:) ast Plugin: OCStaticASTCompilerPlugin << #DemoPlugin slots: {}; tag: 'Plugins'; package: 'OpalCompiler-Core' transform | sends | sends := ast sendNodes. sends := sends select: [ :each | each selector = #ifTrue: ]. sends do: [:each | each replaceWith: (RBLiteralNode value: true)]. ^ast Object << #Demo slots: {}; tag: 'Plugins'; package: 'OpalCompiler-Core' compiler "the example plugin is active for this class" ^super compiler addPlugin: DemoPlugin test ^ false ifTrue:[3] MOP == link := MetaLink new metaObject: #class; selector: #read:in; arguments: #(name object) on Class: read: aVarName in: object ^object instVarNamed: aVarName read:in Demo class with - ivar a - init - accessor (Demo>>#a) ast variableNodes first link: link.