Emoji implements Serializable { public boolean hasVariants() { return !variants.isEmpty(); } Emoji(@NonNull final int[] codePoints, @NonNull final String[] shortcodes,
               @DrawableRes final int resource, final boolean isDuplicate);  Emoji(final int codePoint, @NonNull final String[] shortcodes,
               @DrawableRes final int resource, final boolean isDuplicate);  Emoji(final int codePoint, @NonNull final String[] shortcodes,
               @DrawableRes final int resource, final boolean isDuplicate,
               final Emoji... variants);  Emoji(@NonNull final int[] codePoints, @NonNull final String[] shortcodes,
               @DrawableRes final int resource, final boolean isDuplicate,
               final Emoji... variants); @NonNull String getUnicode(); @Nullable List<String> getShortcodes(); @Deprecated @DrawableRes int getResource(); @NonNull Drawable getDrawable(final Context context); boolean isDuplicate(); @NonNull List<Emoji> getVariants(); @NonNull Emoji getBase(); int getLength(); boolean hasVariants(); void destroy(); @Override boolean equals(final Object o); @Override int hashCode();  }
@Test public void hasVariants() { assertThat(new Emoji(new int[]{ 0x1234, 0x5678 }, new String[]{"test"}, R.drawable.emoji_backspace, false).hasVariants()).isFalse(); assertThat(new Emoji(0x1f3cb, new String[]{"test"}, R.drawable.emoji_backspace, false, new Emoji(new int[] { 0x1f3cb, 0x1f3fb }, new String[]{"test"}, R.drawable.emoji_backspace, false)).hasVariants()).isTrue(); }