Given an def_id of a trait or a trait impl:
Given an trait_assoc_def_id corresponding to an associated item synthesized
from an impl Trait in an associated function from a trait, and an
impl_fn_def_id that represents an implementation of the associated function
that the impl Trait comes from, synthesize an associated type for that impl Trait
that inherits properties that we infer from the method and the associated type.
Given an opaque_ty_def_id corresponding to an impl Trait in an associated
function from a trait, synthesize an associated type for that impl Trait
that inherits properties that we infer from the method and the opaque type.
Given an fn_def_id of a trait or a trait implementation: