macro_rules! access_and_or {
(|| $tt:tt) => { ... };
(|| $right1:ident $right2:tt) => { ... };
(|| $right:tt && $($rest:tt)+) => { ... };
(|| $right:tt || $($rest:tt)+) => { ... };
(|| $right1:ident $right2:tt && $($rest:tt)+) => { ... };
(|| $right1:ident $right2:tt || $($rest:tt)+) => { ... };
(&& $tt:tt) => { ... };
(&& $right1:ident $right2:tt) => { ... };
(&& $right:tt && $($rest:tt)+) => { ... };
(&& $right:tt || $($rest:tt)+) => { ... };
(&& $right1:ident $right2:tt && $($rest:tt)+) => { ... };
(&& $right1:ident $right2:tt || $($rest:tt)+) => { ... };
}