CursorLifecycle.checkIdleOrActive(this); is the standard pattern for CURSOR_LIFECYCLE_ENABLED in next(), so I think it should be there. In this operator, IdleOrActive means !destroyed. And destroy will have done that to input. So, it is indeed impossible for the second test to pass and the first to fail. But that depends on knowing the details of the implementation.