::= "fn" "on_create" "(" ? ")" "->" "[Null]" "{" * "}" ::= "fn" "on_destroy" "(" ? ")" "->" "[Null]" "{" * "}" ::= "@" "{" "}" ::= * ::= "fn" ";" ::= "fn" "{" * "}" ::= "(" ? ")" "->" ::= "-" | "" | "+" ::= "[" ("," )* "]" | "Runnable" ::= ("," )* [("," )*] ::= ":" ::= ":" "="