# Keep classes and methods that have the @UsedForTesting annotation
-keep @com.android.inputmethod.annotations.UsedForTesting class *
-keepclassmembers class * {
    @com.android.inputmethod.annotations.UsedForTesting *;
}

# Keep classes and methods that have the @ExternallyReferenced annotation
-keep @com.android.inputmethod.annotations.ExternallyReferenced class *
-keepclassmembers class * {
    @com.android.inputmethod.annotations.ExternallyReferenced *;
}

# Keep native methods
-keepclassmembers class * {
    native <methods>;
}

# Keep classes that are used as a parameter type of methods that are also marked as keep
# to preserve changing those methods' signature.
-keep class com.android.inputmethod.latin.AssetFileAddress
-keep class com.android.inputmethod.latin.Dictionary
-keep class com.android.inputmethod.latin.NgramContext
-keep class com.android.inputmethod.latin.makedict.ProbabilityInfo
-keep class com.android.inputmethod.latin.utils.LanguageModelParam

# TODO: remove once used in code.
-keep class com.android.inputmethod.keyboard.KeyboardLayout { *; }

