// Distributed under the terms of the MIT license
// Test case submitted to project by https://github.com/practicalswift (practicalswift)
// Test case found by fuzzing

let a {
}
protocol P {
c b: a {
func a<T : A
protocol P {
func f<l : AnyObject, b {
func a
func a"\(d: e == A>) {
"\()
class d
class A : A
typealias b
typealias b>() {
h g {
protocol a {
func a<c
class A : b>) -> g {
class A {
func a<T : d
func i(a<T where T: AnyObject, e)
func a)
struct B<T where T: c
class c<T where T: e<T : d
protocol g { func g<c {
protocol B {
c {
c {
class A {
func a")
typealias e : AnyObject, b {
func i() {
func a<T where T) -> {
func a(v: b: b: a {
class d: c
let a {
c b: AnyObject, b {
}
func a<H : a(v: e)
func g<c>) -> g : AnyObject, e)
struct B
protocol B {
protocol B {
protocol A {
func a"\(d: c<c
class A {
Void{
protocol g {
func g<l : d {
")
struct B
}(v: d: AnyObject, b {
class C() {
protocol A {
class d
protocol P {
class A : d
func g
func a")
Void{
typealias e == A
c {
protocol a {
"\(v: A.a)
typealias b
class A {
func i() -> g {
class c<H : g {
}
}
}()
protocol A : a
func a(d: e<H : A.a(v: a<H : d: a {
")
class A : b
func g<H : AnyObject, e<l : A.a<H : e == A.a
protocol a {
protocol P {
class A : A
protocol P {
protocol P {
"\() -> g {
}() {
struct B<c>(a<c b: g {
h g {
c {
func a")
class A {
h g : e<c>) -> {
func a()
protocol A : d {
protocol A {
let a {
")
}(v: d
protocol g {
class A : a {
func g
func b: B
typealias e : B
class C(v: a(v: a(d: B
Void{
class C(a<T : a {
func a(v: B<c {
func a<l : T) {
typealias e == A
func g
func b
class c
class A : a {
}() -> g { func a)
func a<c<H : d: AnyObject, b {
c {
func a)
Void{
protocol g { func g
protocol A {
protocol P {
class c>) {
func b: A.a<S : T) -> g { func b: a {
typealias b
typealias b: e == A.a<T : AnyObject, b {
struct B<c {
class A : A
func a()
struct B<T : b>) {
class A : B
func a<l : A>) {
class d: A>) {
typealias e : d {
func g
}
protocol B {
class A : A>) -> {
class d
c {
protocol P {
protocol g : e)
func i() {
class A {
func a)
func a<l : d {
typealias e : AnyObject, e<S : AnyObject, e<c
func g<l : AnyObject, b {
}(v: g {
func i()
typealias b
class c
}
}
class c>) -> {
func f<T : AnyObject, b {
func a() -> {
}()
func i(v: a() -> {
struct B<T : d
class A : d
protocol B {
h g {
class A : AnyObject, b {
protocol B {
