Since Field.setBox now compares values before setting the dirty flag I wanted to make sure all of the fields' values have proper equals methods.
There were 2 that had problems; PatternField and BsonRecordField. I didn't figure out a solution for Pattern, but for BsonRecord I added an equals method to Record that compares each field.
There is also a problem with BsonRecord relating to it's mutablity. See this thread  for more info.
To help alleviate the problem I did 2 things:
Note that this commit includes @davewhittaker 's fix for issue 1335
1 - https://groups.google.com/d/topic/liftweb/g8SwfKsLW_0/discussion
Issue 1343 - Ensure equals method works properly with all Fields
+1 I like the copy function although sometimes you don't carbon copy all fields. I'd add a test function that takes field as argument and returns boolean. This way we could filter out which fields should be copied. Thoughts ?
Sounds like a good idea.
so, do we wait before rebasing this one into master?
Yes. I'll add that feature to it first.
On second thought, I created a new issue (#1354) for the filter function. I will work on it when I have more time.
This has been merged to master as is.