// Recursive applications preserve one checked source signature.

fn recurse_1 'r (p: &'r u32, depth: u32) -> u32 {
    if depth == 0 {
        return *p;
    }
    return recurse_1(p, depth - 1);
}

fn left_2 'a (p: &'a u32, depth: u32) -> u32 {
    if depth == 0 {
        return *p;
    }
    return right_2(p, depth - 1);
}

fn right_2 'b (p: &'b u32, depth: u32) -> u32 { return left_2(p, depth); }
