It should be possible to have an immutable document and generateIdIfAbsentFromDocument will return a new document instance.