fn signal<'a>( key: &'a str, circuit: &FastMap<&'a str, Gate<'a>>, cache: &mut FastMap<&'a str, u16>, ) -> u16