@Value.Lazy
    public boolean hasJava9Collections() {
      for (SourceVersion version : SourceVersion.values()) {
        if (version.name().equals("RELEASE_9")) {
          if (processing().getSourceVersion().compareTo(version) >= 0) {
            TypeElement element = findElement(List.class.getCanonicalName());
            assert element != null : "always present in modern JREs";
            for (ExecutableElement e : ElementFilter.methodsIn(element.getEnclosedElements())) {
              if (e.getModifiers().contains(Modifier.STATIC)
                  && e.getSimpleName().contentEquals("of")) {
                return true;
              }
            }
          }
          break;
        }
      }
      return false;
    }
Try to find Guava's object util classes if they're available. First lookup for
{@code base.MoreObjects} then {@code base.Objects}.
Return {@code null} if not found.
@return full class name for Guava's {@code MoreObjects} / {@code Objects} or {@code null} if
    such class doesn't exist in classpath
value-processor/src/org/immutables/value/processor/meta/Proto.java