It does not modify the argument. I cannot remember the reason why the signature is this way, that's why I asked. However, there should be use cases that need to modify the returned PromiseType, so it would have to be PromiseType *BundleGetPromiseType(const Bundle *);