macro_rules! element_error {
($obj : expr, $err : expr, ($msg : expr), [$debug : expr]) => { ... };
($obj : expr, $err : expr, ($msg : expr)) => { ... };
($obj : expr, $err : expr, [$debug : expr]) => { ... };
($obj : expr, $err : expr, ($($msg : tt) *), [$($debug : tt) *]) => { ... };
($obj : expr, $err : expr, ($($msg : tt) *)) => { ... };
($obj : expr, $err : expr, [$($debug : tt) *]) => { ... };
($obj : expr, $err : expr, ($msg : expr), [$debug : expr], details : $details
: expr) => { ... };
($obj : expr, $err : expr, ($msg : expr), details : $details : expr) => { ... };
($obj : expr, $err : expr, [$debug : expr], details : $details : expr) => { ... };
($obj : expr, $err : expr, ($($msg : tt) *), [$($debug : tt) *], details :
$details : expr) => { ... };
($obj : expr, $err : expr, ($($msg : tt) *), details : $details : expr) => { ... };
($obj : expr, $err : expr, [$($debug : tt) *], details : $details : expr) => { ... };
}