code: public Object invokeGetter(final Object instance) throws IllegalArgumentException, IllegalAccessException, InvocationTargetException {
          final Class<?> klass = instance.getClass();
          Method method = methods.get(klass);
          if (method == null) {
              method = introspectAnnotationSingle(klass, annotationType);
              if ((method == null) || (method.getParameterTypes().length != 0)) {
                  throw new IllegalArgumentException(
                          "class " + klass.getName()
                                  + " does not have any no-argument method annotated as @"
                                  + annotationType.getName());
              }
              methods.put(klass, method);
          }
  
          return method.invoke(instance);
      }
docs: Invokes the annotated getter method on the passed object (which may not be <code>null</code>), returning its result.
  
  @throws IllegalArgumentException
  if passed an object does not have any no-argument methods with the specified annotation
  @throws IllegalAccessException
  if unable to invoke the annotated method
  @throws InvocationTargetException
  if the invoked method threw an exception