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

protocol A {
protocol c : A {
[]
func g.c
}
protocol c : a {
class c {
protocol c : C {
:c<f {
class B : S<Int>
struct d) -> {
}
struct S<b: b { func a<d<b: a {
var e(f(v: S<d
protocol b { func a<b: AnyObject, b { func g<S : e where g.h == ")
}
}
func a<b.h == f : b
va d) -> {
struct S<b
typealias b
func a<b
class c {
1
}
}
}
typealias b: b {
}
struct d<D> {
class c {
protocol A : b.b.h == f : A
protocol c : a {
extension A? {
}
}
class A {
struct d<d<b
va d<d
}
va d) -> {
}
}
}
typealias b
protocol A {
typealias b
let a {
S<b> Void>(")
class B : b: a {
class c {
typealias b : d = ")
}
protocol c {
typealias b : e, g<b: AnyObject, g<f : d = f {
var e, b {
}
protocol A : a {
}
}
}
}
class B : S<b.h == ")
extension A? {
protocol b {
func g<b:
