I'm not sure I follow. If a matrix has been created, its type has been set and it has been preallocated (e.g., MATMPIAIJ in ksp/ksp/examples/tutorials/ex2), it is not marked as assembled until after MatAssemblyEnd. Does it still make sense to duplicate it? In my opinion, it does.