macro_rules! impl_native_exception {
    ($name:ident, $exc_name:ident, $doc:expr, $layout:path $(, #checkfunction=$checkfunction:path)?) => { ... };
    ($name:ident, $exc_name:ident, $doc:expr) => { ... };
}macro_rules! impl_native_exception {
    ($name:ident, $exc_name:ident, $doc:expr, $layout:path $(, #checkfunction=$checkfunction:path)?) => { ... };
    ($name:ident, $exc_name:ident, $doc:expr) => { ... };
}