     }
     
     
-    /// if character becomes a surrogate pair in UTF-16
+    /// Boolean value indicating wheather character becomes a surrogate pair in UTF-16.
     var isSurrogatePair: Bool {
         
         return (UTF16.width(self) == 2)
     }
     
     
-    /// Unicode name
+    /// Unicode name.
     var name: String? {
         
         return self.properties.nameAlias


extension Unicode.Scalar {
    
    /// code point string in format like `U+000F`
    var codePoint: String {
        
        return String(format: "U+%04tX", self.value)
    }
    
    
    /// code point pair in UTF-16 surrogate pair
    var surrogateCodePoints: [String]? {
        
        guard self.isSurrogatePair else { return nil }


// MARK: -

extension UTF32.CodeUnit {
    
    /// Return Unicode name.
    ///
    /// Implemented at UTF32.CodeUnit level in order to cover single surrogate characters
    /// that are not allowed by Unicode.Scalar.
    var unicodeName: String? {
        
        if let name = Unicode.Scalar(self)?.name {
            return name
        }
        
        if let codeUnit = UTF16.CodeUnit(exactly: self) {
            if UTF16.isLeadSurrogate(codeUnit) {
                return "<lead surrogate-" + String(format: "%04X", self) + ">"
