         return content
     }()
 
+    /// Contains reference to types implementing any known protocol
     lazy var implementing: [String: [Type]] = {
         var content = [String: [Type]]()
         self.all.forEach { type in


            baseType.based.keys.forEach {  type.based[$0] = $0 }

            let isNotClass = baseType is Struct || baseType is Enum || baseType is Protocol || baseType.isExtension
            if !isNotClass {
                type.inherits[name] = name
                baseType.inherits.keys.forEach {  type.inherits[$0] = $0 }
            } else if baseType is Protocol {

import Foundation
import Stencil

private extension Type {
    var isClass: Bool {
        let isNotClass = self is Struct || self is Enum || self is Protocol
        return !isNotClass && !isExtension
    }
}

private class TypesReflectionBox: NSObject {
    private let types: [Type]

