         
     }
     
+    class A : NSObject, SOCoding {
+        
+        //MARK: SOCoding
+        
+        @objc required init(coder decoder: NSCoder) { // NS_DESIGNATED_INITIALIZER
+            super.init()
+        }
+        
+        @objc func encodeWithCoder(encoder: NSCoder) {
+        }
+        
+        static func dataSize() -> Int {
+            return 0
+        }
+        
+        override required init() {
+            
+        }
+        
+        var uid: UID!
+        var dirty: Bool = true
+    }
+    
+    internal class E : NSObject, NSCoding {
+        
+        //MARK: SOCoding
+        
+        @objc required init(coder decoder: NSCoder) { // NS_DESIGNATED_INITIALIZER
+            super.init()
+        }
+        
+        @objc func encodeWithCoder(encoder: NSCoder) {
+        }
+        
+        override required init() {
+            
+        }
+        
+    }
+    
+    func testFastCoding1() {
+        
+        var obj = E()
+        
+        var data = FastCoder.dataWithRootObject(obj)
+        //var bObj = FastCoder.objectWithData(data) as Node
+        
+        XCTAssertTrue(data.length == 73, "wrong size")
+        println("Node encoding size is: \(data.length)")
+    }
+    
+    func testEmptyClassFastCoding() {
+        
+        var aObj = B()
+        
+        var data = FastCoder.dataWithRootObject(aObj)
+        
+        //var bObj = FastCoder.objectWithData(data) as! A
+        
+        XCTAssertTrue(data.length == 65, "wrong size")
+        //XCTAssertTrue(aObj.dateValue!.isEqual(bObj.dateValue) , "")
+        println("Property encoding size is: \(data.length)")
+    }
+    
     
     //MARK: Node
     

    //MARK: Property (MAX: 100Byte)
    
    // Property:
    // 71 Byte without data
    // 75 Byte -> Boolean
    // 76 Byte -> Int
    // 84 Byte -> Double
    // 84 Byte -> NSDate
    
    func testPropertyFastCoding() {
        

        println("Property encoding size is: \(data.length)")
    }
    
        func testFastCodingObjectBlock2() {
        
        var aObj = Block(used: true)
        var testData = TestClass(num: Int.max)
        aObj.obj = testData
        
        var data = FastCoder.dataWithRootObject(aObj)
        
        var bObj = FastCoder.objectWithData(data) as! Block
        
        XCTAssertTrue(data.length == 149, "wrong size")
        //XCTAssertTrue(aObj.dateValue!.isEqual(bObj.dateValue) , "")
        println("Property encoding size is: \(data.length)")
    }
    
    func testFastCodingTestClass() {
        
        var aObj = TestClass(num: Int.max)
        
        var data = FastCoder.dataWithRootObject(aObj)
        
        var bObj = FastCoder.objectWithData(data) as! TestClass
        
        XCTAssertTrue(data.length == 89, "wrong size")
        //XCTAssertTrue(aObj.dateValue!.isEqual(bObj.dateValue) , "")
        println("Property encoding size is: \(data.length)")
    }
    
    // Test size of ObjectBlock Class
    func testFastCodingObjectBlock1() {
