Make it so that the substitution function preserves as much sharing as possible from the original type.