macro_rules! gb18030_decoder_function {
    ($first_body:block,
     $second_body:block,
     $third_body:block,
     $fourth_body:block,
     $slf:ident,
     $non_ascii:ident,
     $first_minus_offset:ident,
     $second:ident,
     $second_minus_offset:ident,
     $unread_handle_second:ident,
     $third:ident,
     $third_minus_offset:ident,
     $unread_handle_third:ident,
     $fourth:ident,
     $fourth_minus_offset:ident,
     $unread_handle_fourth:ident,
     $source:ident,
     $handle:ident,
     $outermost:tt,
     $name:ident,
     $code_unit:ty,
     $dest_struct:ident) => { ... };
}