This message is not that helpful to users who may newly get this ICCE:
if ((callee->is_interface() && m_tag.is_method()) ||
(!callee->is_interface() && m_tag.is_interface_method())) {
ResourceMark rm(THREAD);
char buf[200];
jio_snprintf(buf, sizeof(buf), "Inconsistent constant data for %s.%s%s at index %d",
callee->name()->as_C_string(), name->as_C_string(), signature->as_C_string(), index);
THROW_MSG_NULL(vmSymbols::java_lang_IncompatibleClassChangeError(), buf);
}
This should be more user friendly and tell that the constant pool for class X has InterfaceMethodref at index y that should be Methodref for function f, or vice versa. The info's there but not really specific enough.