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

// returns test
pub fn alef() -> R<P> {
    loop {}
}
pub fn bet() -> R<Q> {
    loop {}
}

// in_args test
pub fn alpha(_x: R<P>) {
    loop {}
}
pub fn beta(_x: R<Q>) {
    loop {}
}

// test case with multiple appearances of the same type
pub struct ExtraCreditStructMulti<T, U> {
    t: T,
    u: U,
}
pub struct ExtraCreditInnerMulti {}
pub fn extracreditlabhomework(
    _param: ExtraCreditStructMulti<ExtraCreditInnerMulti, ExtraCreditInnerMulti>,
) {
    loop {}
}
pub fn redherringmatchforextracredit(_param: ExtraCreditStructMulti<ExtraCreditInnerMulti, ()>) {
    loop {}
}

pub trait TraitCat {}
pub trait TraitDog {}

pub fn gamma<T: TraitCat + TraitDog>(t: T) {}

pub fn super_soup(s: Result<String, i32>) -> Result<String, i32> {
    s
}
