fixed behavior with empty string values, fixed issues with invalid JSON in the source/target files and added the warnOnIdenticalValues option. refactored the comparison function to be readable