# These flags are in addition to the one in proguard.flags, which is included by the build
# directives in Android.mk.

-keep class ** {
  *** *ForTest(...);
}

-keep class com.android.emailcommon.internet.MimeBodyPart
-keep class com.android.emailcommon.internet.MimeMessage {
  <init>(...);
  *** set*(...);
  *** get*(...);
}
-keep class com.android.emailcommon.internet.MimeMultipart
-keep class com.android.emailcommon.internet.MimeUtility {
  public static java.lang.String foldAndEncode(java.lang.String);
}
-keep class com.android.emailcommon.mail.PackedString {
  <init>(...);
}
-keep class com.android.emailcommon.mail.PackedString$Builder {
  public <init>(...);
  public void put(java.lang.String, java.lang.String);
  public java.lang.String get(java.lang.String);
}
-keep class com.android.emailcommon.utility.ConversionUtilities

-keep class com.android.email.LegacyConversions {
  public static boolean updateMessageFields(...);
}

-keep class com.android.mail.utils.Utils {
  public static android.text.Spanned insertStringWithStyle(...);
}

-keepclasseswithmembers class * {
  *** findProviderForDomain(...);
}
