rename lifecycle mixin isEmpty to hasLifecycle and reverse logic