docs: def change_breakpoint_state(self, bp_number, enabled, condition=None):
          """ Change breakpoint status or `condition` expression.
          
          :param bp_number: number of breakpoint to change 
          :return: None or an error message (string)
          """
          if not (0 <= bp_number < len(IKBreakpoint.breakpoints_by_number)):
              return "Found no breakpoint numbered: %s" % bp_number
          bp = IKBreakpoint.breakpoints_by_number[bp_number]
          if not bp:
              return "Found no breakpoint numbered %s" % bp_number
          _logger.b_debug("    change_breakpoint_state(bp_number=%s, enabled=%s, "
                          "condition=%s) found %s", 
                          bp_number,
                          enabled,
                          repr(condition),
                          bp)
          bp.enabled = enabled
          bp.condition = condition  # update condition for conditional breakpoints
          IKBreakpoint.update_active_breakpoint_flag()  # force flag refresh
          if self.pending_stop or IKBreakpoint.any_active_breakpoint:
              self.enable_tracing()
          else:
              self.disable_tracing()
          return None