# Higher-ranked dyn bound type Callback = dyn for<'a> Fn(&'a str); ==> SourceFile( TypeItem( type, TypeIdentifier, DynamicType( dyn, HigherRankedTraitBound( for, TypeParamList(Lifetime), FunctionType( TypeIdentifier, ParamList(Parameter(ReferenceType(Lifetime, TypeIdentifier)))))))) # Higher-ranked generic trait after dyn Trait type A = dyn Send + for<'a> Trait<'a>; ==> SourceFile( TypeItem( type, TypeIdentifier, BoundedType( DynamicType(dyn, TypeIdentifier), HigherRankedTraitBound( for, TypeParamList(Lifetime), GenericType(TypeIdentifier, TypeArgList(Lifetime)))))) # Higher-ranked generic trait after impl Trait fn f(_: impl Send + for<'a> Trait<'a>) {} ==> SourceFile( FunctionItem( fn, BoundIdentifier, ParamList( Parameter( _, BoundedType( AbstractType(impl, TypeIdentifier), HigherRankedTraitBound( for, TypeParamList(Lifetime), GenericType(TypeIdentifier, TypeArgList(Lifetime)))))), Block))