trait RegionExt {
fn early(
hir_map: &Map<'_>,
index: &mut u32,
param: &GenericParam<'_>
) -> (ParamName, Region);
fn late(
index: u32,
hir_map: &Map<'_>,
param: &GenericParam<'_>
) -> (ParamName, Region);
fn late_anon(named_late_bound_vars: u32, index: &Cell<u32>) -> Region;
fn id(&self) -> Option<DefId>;
fn shifted(self, amount: u32) -> Region;
fn shifted_out_to_binder(self, binder: DebruijnIndex) -> Region;
fn subst<'a, L>(self, params: L, map: &NamedRegionMap) -> Option<Region>
where
L: Iterator<Item = &'a Lifetime>;
}