@Override
    public Object invoke(Object proxy, Method method, @Nullable Object @Nullable [] args)
        throws Throwable {
      if (method.getName().equals("list")) {
        String packageName = (String) requireNonNull(args)[1];
        if (Objects.equals(packageName, packageToMask)) {
          return ImmutableList.of();
        }
      }
      return method.invoke(fileManager, args);
    }
Used to produce a {@link StandardJavaFileManager} where a certain package appears to have no
classes. The results are exactly those from the proxied {@code StandardJavaFileManager} except
for the {@link StandardJavaFileManager#list list} method when its {@code packageName} argument
is the given package, in which case the result is an empty list.

<p>We can't use {@link javax.tools.ForwardingJavaFileManager} because at least some JDK
versions require the file manager to be a {@code StandardJavaFileManager} when the {@code
--release} flag is given.
common/src/test/java/com/google/auto/common/GeneratedAnnotationsTest.java