 #endif
   }
 
-  private func substring(from range: Range<String.UTF16Index>) -> String {
+  private func substring(from range: Range<String.UTF16View.Index>) -> String {
     return String(describing: string[range])
   }
 

    self.result = result
  }

  lazy var range: Range<String.UTF16Index> = {
    return self.utf16Range(from: self.result.range)!
  }()


    return self.substring(from: range)
  }()

  private func utf16Range(from range: NSRange) -> Range<String.UTF16View.Index>? {
#if swift(>=4.0)
    return Range(range, in: string)
#else
