macro_rules! java_inner {
(toplevel { package $name:ident; $($remaining:tt) * }) => { ... };
(toplevel { public class $name:ident {
$($inner:tt) *
} $($remaining:tt) * }) => { ... };
(toplevel { class $name:ident {
$($inner:tt) *
} $($remaining:tt) * }) => { ... };
(toplevel {}) => { ... };
(class($name:ident) { public static void main(String[] $args:ident) {
$($inner:tt) *
} $($remaining:tt) * }) => { ... };
(class($name:ident) {}) => { ... };
(stmt { System.out.println($($out:expr) *); $($remaining:tt) * }) => { ... };
(stmt { System.out.println_debug($($out:expr) *); $($remaining:tt) * }) => { ... };
(stmt { $type:ident $name:ident = $value:expr; $($remaining:tt) * }) => { ... };
(stmt { $name:ident++; $($remaining:tt) * }) => { ... };
(stmt { for (($($pre:tt) *) $cond:expr; ($($post:tt) *)) {
$($inner:tt) *
} $($remaining:tt) * }) => { ... };
(stmt {}) => { ... };
(kind int) => { ... };
}