I'm fine with doing it either way. On one hand, because this is a new class, one could easily add new functionality that wasn't there in previous cases, but on the other hand, it could cause someone in the hypothetical "invalidate a bunch of values" case to start throwing exceptions where previously his code ran successfully.  Of course, that's a pretty easy to catch fix, though //technically// it breaks API compatibility to start throwing a previously un-declared exception, even if it is a RuntimeException.

I sincerely doubt anyone goes around invalidating values not belonging to his own plugin though, because as it stands right now even LazyMetadataValue is not actually "lazy" (see my discussion on the topic here: http://goo.gl/u7m8B ) I have a pull request to address that by creating on-demand providers: https://github.com/Bukkit/Bukkit/pull/772