The lifetime of midphase objects is handled entirely by the CollisionConstraintAllocator. Nothing outside of the CollisionConstraintAllocator should hold a pointer to the detector or any constraints it creates for more than the duration of the tick.