public static Collection<ViewAttribute> createMenuAttributes(@NonNull Context context, @NonNull Menu menu) {
final Resources res = context.getResources();
List<ViewAttribute> attributes = new ArrayList<>();
attributes.add(new ViewAttribute<>("MenuSize", menu.size()));
attributes.add(new ViewAttribute<>("MenuHasVisibleItems", menu.hasVisibleItems()));
for (int i = 0; i < menu.size(); i++) {
MenuItem item = menu.getItem(i);
String prefix = "Item " + i + ": ";
attributes.add(new ViewAttribute<>(prefix + "Title", item.getTitle()));
attributes.add(new ViewAttribute<>(prefix + "ContentDescription",
MenuItemCompat.getContentDescription(item)));
attributes.add(new ViewAttribute<>(prefix + "TooltipText", MenuItemCompat.getTooltipText(item)));
attributes.add(new ViewAttribute<>(prefix + "Checkable", item.isCheckable()));
attributes.add(new ViewAttribute<>(prefix + "Checked", item.isChecked()));
attributes.add(new ViewAttribute<>(prefix + "Enabled", item.isEnabled()));
attributes.add(new ViewAttribute<>(prefix + "Visible", item.isVisible()));
attributes.add(new ViewAttribute<>(prefix + "Order", item.getOrder()));
attributes.add(new ViewAttribute<Void>(prefix + "Icon", item.getIcon()));
attributes.add(createColorAttribute("IconTint",
MenuItemCompat.getIconTintList(item)));
attributes.add(new ViewAttribute<>("IconTintMode",
new PorterDuffModeValue(MenuItemCompat.getIconTintMode(item))));
attributes.add(new ViewAttribute<>(prefix + "Id", new ResourceValue(res, item.getItemId())));
attributes.add(new ViewAttribute<>(prefix + "GroupId", new ResourceValue(res, item.getGroupId())));
}
return attributes;
}