docs: public static TypeMirror getReturnType(TypeElement type, ExecutableElement method, Types types) {
      try {
        ExecutableType executableType = (ExecutableType)
            types.asMemberOf((DeclaredType) type.asType(), method);
        return executableType.getReturnType();
      } catch (IllegalArgumentException e) {
        // Eclipse incorrectly throws an IllegalArgumentException here:
        //    "element is not valid for the containing declared type"
        // As a workaround for the common case, fall back to the declared return type.
        return method.getReturnType();
      }
    }