def get_program(self, program_id: str) -> AbstractProgram:
        """Returns an existing AbstractProgram given an identifier.

        Iteratively checks each processor for the given id.

        Args:
            program_id: Unique ID of the program within the parent project.

        Returns:
            An AbstractProgram for the program.

        Raises:
            KeyError: if program does not exist
        """
        for processor in self._processors.values():
            try:
                return processor.get_program(program_id)
            except KeyError:
                continue
        raise KeyError(f'Program {program_id} does not exist')
Returns an existing AbstractProgram given an identifier.

        Iteratively checks each processor for the given id.

        Args:
            program_id: Unique ID of the program within the parent project.

        Returns:
            An AbstractProgram for the program.

        Raises:
            KeyError: if program does not exist
        
cirq-google/cirq_google/engine/abstract_local_engine.py