         // Put teardown code here. This method is called after the invocation of each test method in the class.
         super.tearDown()
     }
-    
-    
+
     func testPreprocessor() {
         let _ = Drafter()
-        let ocLexer = SourceLexer(input: ocCode, isSwift: false)
+        let ocHeaderLexer = SourceLexer(input: ocHeaderCode, isSwift: false)
+        let ocImpLexer = SourceLexer(input: ocImpCode, isSwift: false)
         let swiftLexer = SourceLexer(input: swiftCode, isSwift: true)
         
-        guard let ocTypes = ObjcTypeParser().parser.run(ocLexer.allTokens) else {
+        guard let ocHeaderTypes = ObjcTypeParser().parser.run(ocHeaderLexer.allTokens) else {
+            XCTAssert(false)
+            return
+        }
+        guard let ocImpTypes = ObjcTypeParser().parser.run(ocImpLexer.allTokens) else {
             XCTAssert(false)
             return
         }

            return
        }
        
        let ocNodes = FileNode(md5: "",
                               drafterVersion: DrafterVersion,
                               path: "",
                               type: .m,
                               swiftTypes: [],
                               objcTypes: ocTypes)
        let swiftNodes = FileNode(md5: "",
                               drafterVersion: DrafterVersion,
                               path: "",
                               type: .swift,
                               swiftTypes: swiftTypes,
                               objcTypes: [])
        
        let classes = Preprocessor.shared.process([ocNodes, swiftNodes])
        
    }
}


import XCTest

let ocHeaderCode = """
@interface MyClass1: NSObject
- (void)method1;
@end

"""

let ocImpCode = """
@implementation MyClass1
- (void)method1 {}
- (void)method3 {}
@end

@interface MyClass1 (Category) <MyProtocol>
- (void)method3;
@end

@implementation MyClass1 (Category)
