// Signature format: 4.0
package androidx.lifecycle {

  public class LifecycleRegistry extends androidx.lifecycle.Lifecycle {
    ctor public LifecycleRegistry(androidx.lifecycle.LifecycleOwner);
    method public void addObserver(androidx.lifecycle.LifecycleObserver);
    method @VisibleForTesting public static androidx.lifecycle.LifecycleRegistry createUnsafe(androidx.lifecycle.LifecycleOwner);
    method public androidx.lifecycle.Lifecycle.State getCurrentState();
    method public int getObserverCount();
    method public void handleLifecycleEvent(androidx.lifecycle.Lifecycle.Event);
    method @Deprecated @MainThread public void markState(androidx.lifecycle.Lifecycle.State);
    method public void removeObserver(androidx.lifecycle.LifecycleObserver);
    method @MainThread public void setCurrentState(androidx.lifecycle.Lifecycle.State);
  }

  @Deprecated public interface LifecycleRegistryOwner extends androidx.lifecycle.LifecycleOwner {
    method @Deprecated public androidx.lifecycle.LifecycleRegistry getLifecycle();
  }

  public class ViewTreeLifecycleOwner {
    method public static androidx.lifecycle.LifecycleOwner? get(android.view.View);
    method public static void set(android.view.View, androidx.lifecycle.LifecycleOwner?);
  }

}

