                 expect(sut.value(forKeyPath: "isTuple") as? Bool).to(equal(true))
             }
 
+            it("can report closure type via KVC") {
+                let sut = Typealias(typeName: TypeName("(Int) -> (Int)"))
+                expect(sut.value(forKeyPath: "isClosure") as? Bool).to(equal(true))
+            }
+
             it("can report actual type name via KVC") {
                 let sut = AssociatedValue(typeName: TypeName("Alias"))
                 expect(sut.value(forKeyPath: "actualTypeName") as? TypeName).to(equal(TypeName("Alias")))


class TypedSpec: QuickSpec {
    override func spec() {

        describe("AssociatedValue") {
            it("can report optional via KVC") {
                expect(AssociatedValue(typeName: TypeName("Int?")).value(forKeyPath: "isOptional") as? Bool).to(equal(true))

                expect(sut.value(forKeyPath: "isTuple") as? Bool).to(equal(true))
            }

            it("can report closure type via KVC") {
                let sut = AssociatedValue(typeName: TypeName("(Int) -> (Int)"))
                expect(sut.value(forKeyPath: "isClosure") as? Bool).to(equal(true))
            }

            it("can report actual type name via KVC") {
                let sut = AssociatedValue(typeName: TypeName("Alias"))
                expect(sut.value(forKeyPath: "actualTypeName") as? TypeName).to(equal(TypeName("Alias")))
