default Document deepCopy() {
        return DocumentUtil.deepCopy(this,
            data -> new BaseDocument(getParent().orElse(null), data));
    }
Returns a <em>mutable</em> copy of this document. The deepCopy should be
a deep copy, but does not need to use the same implementations as the
original.

@return  a mutable deep copy of the document
runtime-parent/runtime-config/src/main/java/com/speedment/runtime/config/trait/HasDeepCopy.java