Faits: Faits: A. La société B._ a saisi le Procureur général du canton de Vaud d'une plainte pour escroquerie, gestion déloyale et abus de confiance notamment contre A._. A la requête des autorités vaudoises, le Procureur général du canton de Genève a repris comme objet de sa compétence la procédure, confiée au Juge d'instruction Marc Tappolet. Celui-ci a d'abord entendu A._ en qualité de témoin. Le 25 février 2004, il l'a cité à comparaître à l'audience du 12 mars suivant, en vue de son inculpation pour infraction aux art. 158 et 260ter CP. Le 11 mars 2004, A._ a demandé la récusation du Juge Tappolet. Il ne s'est pas présenté à l'audience du lendemain. Le 21 avril 2004, le Collège des Juges d'instruction du canton de Genève a déclaré la requête irrecevable, au motif que A._, faute pour lui d'être partie à la procédure, n'était pas légitimé à demander la récusation du Juge Tappolet. Le 21 avril 2004, le Collège des Juges d'instruction du canton de Genève a déclaré la requête irrecevable, au motif que A._, faute pour lui d'être partie à la procédure, n'était pas légitimé à demander la récusation du Juge Tappolet. B. Agissant par la voie du recours de droit public, A._ demande au Tribunal fédéral d'annuler la décision du 21 avril 2004. Au titre des mesures provisionnelles, il demande à ce que le Juge Tappolet soit invité à s'abstenir de tout acte d'instruction jusqu'à droit jugé. Il invoque les art. 9 et 29 Cst. Le Collège des Juges d'instruction, le Juge d'instruction et le Procureur général concluent au rejet du recours. 