         return attributes
     }
     
+    private func attributesWithTextColor(textColor: UIColor, underlineStyle: NSUnderlineStyle) -> [String: AnyObject] {
+        var attributes = attributesWithTextColor(textColor)
+        attributes[NSUnderlineStyleAttributeName] = underlineStyle.rawValue
+        
+        return attributes
+    }
+    
     private func setupTextSystem() {
         lineBreakMode = .ByTruncatingTail
         

            
            if linkRangeResult.linkDetectionType == .TextLink {
                let color = highlighted ? privateTextLinkHighlightedTextColor : textLinkTextColor
                attributes = attributesWithTextColor(color)
            }
            
            if linkRangeResult.linkDetectionType == .UserHandle {
                let color = highlighted ? privateUserHandleHighlightedTextColor : userHandleTextColor
                attributes = attributesWithTextColor(color)
            }
            
            if linkRangeResult.linkDetectionType == .Hashtag {
                let color = highlighted ? privateHashtagHighlightedTextColor : hashtagTextColor
                attributes = attributesWithTextColor(color)
            }
            
            if linkRangeResult.linkDetectionType == .URL {
                let color = highlighted ? privateLinkHighlightedTextColor : linkTextColor
                attributes = attributesWithTextColor(color)
            }
            
            if let attributes = attributes {

    public var userHandleHighlightedTextColor: UIColor?
    public var hashtagHighlightedTextColor: UIColor?
    public var linkHighlightedTextColor: UIColor?
    
    // UnderlineStyle
    public var textLinkUnderlineStyle: NSUnderlineStyle = .StyleNone
    public var userHandleUnderlineStyle: NSUnderlineStyle = .StyleNone
    public var hashtagUnderlineStyle: NSUnderlineStyle = .StyleNone
    public var linkUnderlineStyle: NSUnderlineStyle = .StyleNone
    
    // MARK: - Private Properties
    
