code: def update(self):
          
          if not self._remap:
              return
  
          with self._remap_lock:
              if not self._remap:
                  return
  
              self._rules.sort(key=lambda x: x.match_compare_key())
              for rules in itervalues(self._rules_by_endpoint):
                  rules.sort(key=lambda x: x.build_compare_key())
              self._remap = False
docs: Called before matching and building to keep the compiled rules
          in the correct order after things changed.