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)+) => { ... };
}