         }
     })
 
+    static let array: ValueTransformer<[AnyObject], AnyObject, NSError> = ValueTransformer(transformClosure: { value in
+        return success(value)
+    }, reverseTransformClosure: { value in
+        switch value {
+        case let value as [AnyObject]:
+            return success(value)
+        default:
+            return failure(NSError())
+        }
+    })
+
     static let dictionary: ValueTransformer<[String: AnyObject], AnyObject, NSError> = ValueTransformer(transformClosure: { value in
         return success(value)
     }, reverseTransformClosure: { value in

    })
}

struct Adapters {
    static let inner = DictionaryAdapter(specification: [
        "count": transform(InnerLenses.count, ValueTransformers.int)

        "count": transform(OuterLenses.count, ValueTransformers.int),
        "inner": transform(OuterLenses.inner, lift(inner, Inner(count: 0)))
    ], dictionaryTansformer: ValueTransformers.dictionary)

    static let node: DictionaryAdapter<Node, AnyObject, NSError> = fix { adapter in
        return DictionaryAdapter(specification: [
            "children": transform(NodeLenses.children, lift(lift(adapter, Node(children: []))) >>> ValueTransformers.array)
        ], dictionaryTansformer: ValueTransformers.dictionary)
    }
}

class AdapterSpec: QuickSpec {
