First commit of type safe diffing