code: def while_do(self, classical_reg, q_program):
          
          label_start = LabelPlaceholder("START")
          label_end = LabelPlaceholder("END")
          self.inst(JumpTarget(label_start))
          self.inst(JumpUnless(target=label_end, condition=classical_reg))
          self.inst(q_program)
          self.inst(Jump(label_start))
          self.inst(JumpTarget(label_end))
          return self
docs: While a classical register at index classical_reg is 1, loop q_program
  
          Equivalent to the following construction:
  
          .. code::
  
              WHILE [c]:
                 instr...
              =>
                LABEL @START
                JUMP-UNLESS @END [c]
                instr...
                JUMP @START
                LABEL @END
  
          :param int classical_reg: The classical register to check
          :param Program q_program: The Quil program to loop.
          :return: The Quil Program with the loop instructions added.
          :rtype: Program