                         XCTFail("Error")
                     }
                     if let listing = array[1] as? Listing {
-                        var comments: [Thing] = []
-                        var depths: [Int] = []
-                        for thing in listing.children {
-                            let (c, d) = extendAllRepliesAndDepth(thing, depth:1)
-                            comments += c
-                            depths += d
-                        }
-                        XCTAssert(comments.count == depths.count, "list is mulformed.")
-                        XCTAssert(gt_type.count == comments.count, "list is mulformed.")
+                        let incomming = listing.children
+                            .flatMap({ $0 as? Comment })
+                            .reduce([], combine: {
+                                return $0 + extendAllRepliesAndDepth($1, depth: 1)
+                            })
                         
-                        for i in 0 ..< comments.count {
+                        incomming.forEach({
+                            var b = ""
+                            for _ in 0 ..< ($0.1 - 1) {
+                                b += "  "
+                            }
+                            print("\(b)\($0.0.dynamicType) - \($0.0.id)")
+                        })
+                        
+                        XCTAssert(gt_type.count == incomming.count, "list is mulformed.")
+                        print(incomming)
+                        print(gt_type)
+                        print(gt_type.count)
+                        for i in 0 ..< gt_type.count {
                             let (c, d) = gt_type[i]
-                            XCTAssert(c == comments[i].dynamicType, "data type error.")
-                            XCTAssert(d == depths[i], "element's depth is wrong.")
+                            XCTAssert(c == incomming[i].0.dynamicType, "data type error.")
+                            XCTAssert(d == incomming[i].1, "element's depth is wrong.")
                         }
                     } else {
                         XCTFail("Error")

        (More.self,     3)
    ]
    
    /**
     test data
     comment
        comment
            more
        comment
            more
     comment
        comment
            more
     comment
        comment
            more
        comment
            more
     comment
        comment
            more
        comment
            more
        comment
            more
        comment
            more
    */
    func testListWhichHasSomeCommentsIncludingRepliesRecursively() {
        print("Test whether Parser can extend Comment objects that has some More objects as children.")

        (Comment.self,  1),
        (Comment.self,  2),
        (More.self,     3),
        (More.self,     3),
        (Comment.self,  1),
        (Comment.self,  2),
        (More.self,     3),
