docs: def _is_defaultable(i, entry, table, check_for_aliases=True):
      """Determine if an entry may be removed from a routing table and be
      replaced by a default route.
  
      Parameters
      ----------
      i : int
          Position of the entry in the table
      entry : RoutingTableEntry
          The entry itself
      table : [RoutingTableEntry, ...]
          The table containing the entry.
      check_for_aliases : bool
          If True, the table is checked for aliased entries before suggesting a
          route may be default routed.
      """
      # May only have one source and sink (which may not be None)
      if (len(entry.sources) == 1 and
              len(entry.route) == 1 and
              None not in entry.sources):
          # Neither the source nor sink may be a core
          source = next(iter(entry.sources))
          sink = next(iter(entry.route))
  
          if source.is_link and sink.is_link:
              # The source must be going in the same direction as the link
              if source.opposite is sink:
                  # And the entry must not be aliased
                  key, mask = entry.key, entry.mask
                  if not check_for_aliases or \
                          not any(intersect(key, mask, d.key, d.mask) for
                                  d in table[i+1:]):
                      return True
      return False