assert!(input.sig.asyncness.is_none(),"Cannot be async");
assert!(input.sig.constness.is_none(),"Cannot be const");
assert!(input.sig.inputs.len()==1,"There can only be one argument, and it should be a pointer to the Lua state (gmod::lua::State)");
assert!(matches!(&input.sig.output,ReturnType::Type(_,r#type)ifr#type.to_token_stream().to_string()=="i32"),"The output must be an i32, representing the number of return values of the function");
assert!(input.sig.abi.is_none()||input.sig.abi.as_ref().and_then(|abi|abi.name.as_ref()).map(|abi|abi.value()=="C-unwind").unwrap_or(true),"Do not specify an ABI");