     
     func isFirstLetterDigit() -> Bool {
         
-        guard let c : Character = self.characters.first else {
+        guard let c : Character = self.first else {
             return false
         }
         

        
        // Create path components separated by delimiter (. by default) and get key for root object
		// filter empty path components, these can be caused by delimiter at beginning/end, or multiple consecutive delimiters in the middle
        let pathComponents : Array<String> = primaryKeypath.components(separatedBy: baseDelimiter).filter({ $0.characters.count > 0 })
        primaryKeypath = pathComponents.joined(separator: baseDelimiter)
        let rootKey : String = pathComponents[0]
		

        var numSplits = 0
        
        var curIdx = self.startIndex
        for i in self.indices {
            let c = self[i]
            if c == by && (maxSplits == 0 || numSplits < maxSplits) {
                let str = String(self[curIdx..<i])
