Seems to me that `MTLPropertyStorageTransitory` should be used for `weak`/`assign`/`unsafe_unretained` if the property is of type `id` which could only not be the case for `assign` I believe.