// A func foo(fn: () throws -> Void) rethrows // B func foo<erased E: Error>(fn: () throws E -> Void) rethrows E // C func foo<erased E: Error>(fn: () throws E -> Void) rethrows Error