I have a bunch of metadata items, and some of they need to have damage values.
In class Item i found ItemStack sensitive versions of getDamage, getMaxDamage, etc.
But in ItemStack class integer itemDamage("metadata") is not public(its "default"). And in getter for that int it checks if item is not equal to null, then return item.getDamage(this).
Because i override this to use NBT instead of par1ItemStack.itemDamage i have some problems, especially in my own Item(use metadata for all kinds of things, every method, that have ItemStack argument use .getItemDamage() to choose MetaItem class and invoke similar method in it), NEI completely froze minecraft threads, when i tryed to open GUI, etc. etc. So, my suggestion is to add method getMetadata() in the ItemStack class, that returns just itemDamage, and getItemDamage() can still return item.getDamage(this) value.
P. S. Sorry about mistakes, my English is very bad actually =/