docs: static Key create(
        TypeMirror type, Iterable<? extends AnnotationMirror> annotations, Types types) {
      ImmutableSet.Builder<AnnotationMirror> qualifiers = ImmutableSet.builder();
      for (AnnotationMirror annotation : annotations) {
        if (isAnnotationPresent(annotation.getAnnotationType().asElement(), Qualifier.class)) {
          qualifiers.add(annotation);
        }
      }
  
      // TODO(gak): check for only one qualifier rather than using the first
      Optional<AnnotationMirror> qualifier = FluentIterable.from(qualifiers.build()).first();
  
      TypeMirror keyType =
          isProvider(type)
              ? MoreTypes.asDeclared(type).getTypeArguments().get(0)
              : boxedType(type, types);
      return new AutoValue_Key(
          keyType, wrapOptionalInEquivalence(AnnotationMirrors.equivalence(), qualifier));
    }