# Use ProGuard only to get rid of unused classes
-dontobfuscate
-dontoptimize

# Keep all attributes except runtime invisible annotations.
-keepattributes !RuntimeInvisibleAnnotations,
                !RuntimeInvisibleParameterAnnotations,
                !RuntimeInvisibleTypeAnnotations,
                *

# Parcel reflectively accesses this field.
-keepclassmembers class * implements android.os.Parcelable {
  public static *** CREATOR;
}

# Don't warn about Nullable and NonNull annotations
-dontwarn org.jetbrains.annotations.*

# Unexpected reference to missing service class: META-INF/services/javax.annotation.processing.Processor.
-dontwarn javax.annotation.processing.Processor

# Keep PreferenceController constructors
-keepclassmembers public class * extends com.android.car.settings.common.PreferenceController {
   public <init>(...);
}

# Keep QCItem constructors
-keepclassmembers public class * extends com.android.car.settings.qc.SettingsQCItem {
   public <init>(...);
}

# Keep QCBackgroundWorker constructors
-keepclassmembers public class * extends com.android.car.settings.qc.SettingsQCBackgroundWorker {
   public <init>(...);
}

# Keep fragments that are only created via xml
-keep public class * extends com.android.car.settings.common.SettingsFragment
-keep public class * extends com.android.car.settings.common.BaseFragment

# Keep PreferenceControllers
-keep public class * extends com.android.car.settings.common.PreferenceController
