 }
 
 public extension Array {
+    /// - parameter start: any integer or `nil` to indicate the beginning of the range
+    /// - parameter end: any integer or `nil` to indicate the end of the range
+    /// - returns: an ArraySlice with content as specified by the input
     public subscript(start:Int?, end: Int?) -> ArraySlice<Element> {
         let (safeStart, safeEnd) = normalize(start, end: end, total: self.count)
         return self[Range<Int>(start: safeStart, end: safeEnd)]

}

public extension String {
    public subscript(start:Int?, end:Int?) -> String {
        let (safeStart, safeEnd) = normalize(start, end: end, total: self.characters.count)


}

public extension ArraySlice {
    /// - parameter start: any integer or `nil` to indicate the beginning of the range
    /// - parameter end: any integer or `nil` to indicate the end of the range
    /// - returns: an ArraySlice with content as specified by the input
    public subscript(start:Int?, end: Int?) -> ArraySlice<Element> {
        let (safeStart, safeEnd) = normalize(start, end: end, total: self.count)
        return self[Range<Int>(start: safeStart, end: safeEnd)]
