These seems to use only `decl.inputs`, maybe it could take just that, rather than the whole fn decl?