I noticed Document does not have a clear() method, to remove all the Fields set on it. If we want to encourage the reuse of Document and Field, I think it's a required method. We do have remove* versions, but no clear().
BTW, I noticed that Field's constructors check for null value and throw an exception, however the setter methods don't. Shouldn't they also do these checks? I can create a patch which covers both, unless you have an objection. Shai