                 let result = adapter.decode(Inner(count: 2), from: [ "count": 3 ])
 
                 expect(result.value?.count).to(equal(3))
+            }
+        }
+
+        describe("Fixed adapters") {
+            let adapter = Adapters.node
+
+            it("should encode a model") {
+                let result = adapter.encode(Node(children: [ Node(children: []), Node(children: []) ]))
+
+                expect((result.value as? [String: [AnyObject]])?["children"]?.count).to(equal(2))
+            }
+
+            it("should decode a model from data") {
+                let result = adapter.decode(Node(children: []), from: [ "children": [ [ "children": [] ], [ "children": [] ] ] ])
+
+                expect(result.value?.children.count).to(equal(2))
             }
         }
 

    })
}

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

        }
    })

    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
