code: def next_address_avoid_collision(self, start_addr):
          
          i = 1
          while self.is_address_in_use(next_addr(start_addr, i)):
              i += 1
          return next_addr(start_addr, i)
docs: Finds the next address recursively which does not collide with any other address