Allow mutation: replace an object with another one but has the same
type, replace a primitive with another one.