 }
 
 public class LinkRangeResult: NSObject {
-    let linkDetectionType: ContextLabel.LinkDetectionType
-    let linkRange: NSRange
-    let linkString: String
-    let textLink: TextLink?
+    public let linkDetectionType: ContextLabel.LinkDetectionType
+    public let linkRange: NSRange
+    public let linkString: String
+    public let textLink: TextLink?
     
     // MARK: Initializers
     

    func contextLabel(contextLabel: ContextLabel, beganTouchOf text: String, with linkRangeResult: LinkRangeResult)
    func contextLabel(contextLabel: ContextLabel, movedTouchTo text: String, with linkRangeResult: LinkRangeResult)
    func contextLabel(contextLabel: ContextLabel, endedTouchOf text: String, with linkRangeResult: LinkRangeResult)
}

public class ContextLabelData: NSObject {


public class ContextLabel: UILabel, NSLayoutManagerDelegate {
    
    public struct LinkDetectionType : OptionSetType {
        public typealias RawValue = UInt
        private var value: UInt = 0
        init(_ value: UInt) { self.value = value }
        public init(rawValue value: UInt) { self.value = value }
        init(nilLiteral: ()) { self.value = 0 }
        static var allZeros: LinkDetectionType { return self.init(0) }
        static func fromMask(raw: UInt) -> LinkDetectionType { return self.init(raw) }
        public var rawValue: UInt { return self.value }
        
        static var None: LinkDetectionType { return self.init(0) }
        static var UserHandle: LinkDetectionType { return LinkDetectionType(1 << 0) }
