code: def unlock(self, unique_id_prefix, case_id, interact):
          
          print(self.setup.strip())
          prompt_num = 0
          current_prompt = []
          try:
              for line in self.lines:
                  if isinstance(line, str) and line:
                      print(line)
                      current_prompt.append(line)
                  elif isinstance(line, CodeAnswer):
                      prompt_num += 1
                      if not line.locked:
                          print('\n'.join(line.output))
                          continue
  
                      unique_id = self._construct_unique_id(unique_id_prefix, self.lines)
                      line.output = interact(unique_id,
                                             case_id + ' >  Prompt {}'.format(prompt_num),
                                             '\n'.join(current_prompt),
                                             line.output, line.choices)
                      line.locked = False
                      current_prompt = []
              self.locked = False
          finally:
              self._sync_code()
docs: Unlocks the CodeCase.
  
          PARAMETERS:
          unique_id_prefix -- string; a prefix of a unique identifier for this
                              Case, for purposes of analytics.
          case_id          -- string; an identifier for this Case, for purposes of
                              analytics.
          interact         -- function; handles user interaction during the unlocking
                              phase.