1. A computing system comprising: a processor; and memory storing instructions executable by the processor, wherein the instructions configure the computing system to: access a type file representing a type in a first version of a computing system; identify an upgrade applicable to the first version to obtain an upgraded version of the computing system; apply, to a second version of the computing system, an object model that specifies a hierarchical type structure that includes primitive components that define behavior of a runtime object derived from the type; based on applying the object model to the second version, disassemble the type in the second version into a first set of primitive components; disassemble the type in the upgraded version into a second set of primitive components; define a change that represents a combination of a customization in the second version and the upgrade based on comparing the first and second sets of primitive components to each other; serialize the change into a customization file that is separate from the type file; store mapping information that maps the customization file to the type file; and generate a customized, upgraded version of the computing system by: accessing the customization file based on the mapping information; de-serializing the customization file into a corresponding object representation of the customization; and applying the corresponding object representation to the first version.