Avoid string concatenation and boxing for implicit .ToString()
Avoid boxing of enums
Model: Turned VersionPart and VersionDottedList into structs