I like this, a nice solution to the issues raised on php-internals.
One minor suggestion: I would re-phrase the error message:
"Method %s does not have a annotation named %s"
"Method '%s' does not have annotation '%s'"
as it has fewer words and slightly more accurate grammar. This is obviously not a big deal, just in case that wasn't clear :).