pub struct P;
pub struct Q;
pub struct R<T>(T);

// returns test
pub fn alef() -> &'static [R<P>] {
    loop {}
}
pub fn bet() -> R<[Q; 32]> {
    loop {}
}

// in_args test
pub fn alpha(_x: R<&'static [P]>) {
    loop {}
}
pub fn beta(_x: [R<Q>; 32]) {
    loop {}
}

pub trait TraitCat {}
pub trait TraitDog {}

pub fn gamma<T: TraitCat + TraitDog>(t: [T; 32]) {}

pub fn epsilon<T: TraitCat + TraitDog>(t: &[T]) {}