             print((error as NSError).description)
         }
         
+    }
+    
+    private func defaultCommentStructureMatches(inString string: String) -> NSTextCheckingResult? {
+        do {
+            let defaultCommentStructureRegex = try NSRegularExpression(pattern: "\\A Class = \".*\"; .* = \"(.*)\"; ObjectID = \".*\"; \\z", options: .CaseInsensitive)
+            return defaultCommentStructureRegex.matchesInString(string, options: .ReportCompletion, range: NSMakeRange(0, string.characters.count)).first
+        } catch {
+            return nil
+        }
     }
     
     /// Rewrites file with specified translations and reloads lines from new file.

                        continue
                    }
                    
                    let updatedValue: String = {
                        
                        let oldTranslation = oldTranslations.filter{ $0.0 == key }.first
                        if let existingValue = oldTranslation?.1 {
                            if !force {
                                return existingValue
                            }
                        }
                        
                        if !addNewValuesAsEmpty {
                            return newValue
                        }
                        
                        return ""
                        
                    }()
                    
                    let updatedComment: String? = try {
                        
                        let oldTranslation = oldTranslations.filter{ $0.0 == key }.first
                        
                        guard let oldComment = oldTranslation?.2 else {
                            // add new comment if none existed before

                            return newComment
                        }
                        
                        if updateCommentWithBase && self.defaultCommentStructureMatches(inString: oldComment) != nil {
                            // update
                            return newComment
                        } else {
                            return oldComment
                        }
                    }()

                    
                    let updatedValue: String = {
                        
                        let oldTranslation = oldTranslations.filter{ $0.0 == key }.first
                        
                        guard let oldValue = oldTranslation?.1 else {
                            if addNewValuesAsEmpty {
                                // add new key with empty value
                                return ""
                            } else {
                                // add new key with Base value
                                return newValue
                            }
                        }
                        
                        if force {
                            // override with new value in force update mode
                            return newValue
                        }
                        
                        if let oldBaseValue = oldBaseValue {
                            if oldBaseValue == oldValue {
                                // update base value
                                return newValue
                            }
                        }
                        
                        // keep existing translation
                        return oldValue
                        
                    }()
                    
                    
                    let updatedTranslation = (key, updatedValue, updatedComment)
                    translations.append(updatedTranslation)
