Whenever you want to continue modifying an object without overwriting the non-annotational property values and origin collections of the existing object versions, you create a new version of the object. When you create a new object version, you must use an existing, frozen version of the object as the creation version of the to-be-created version. To create the new version, you invoke the CreateVersion method with an IRepositoryObjectVersion interface pointer to the creation version. Repository creates a new, unfrozen version of the object. The new version has property values identical to those of the creation version. The new version's collections are based on the creation version's collections, as follows:
When you create a new version of an object, Repository modifies the version graph accordingly.