code: static String createAnnotationId(Annotation annotation) {
          Method[] methods = doPrivileged(
              (PrivilegedAction<Method[]>) () -> annotation.annotationType().getDeclaredMethods());
  
          return Stream.of(methods)
              .filter(method -> !method.isAnnotationPresent(Nonbinding.class))
              .sorted(comparing(Method::getName))
              .collect(() -> new StringJoiner(",", "@" + annotation.annotationType().getCanonicalName() + "(", ")"),
                  (joiner, method) -> {
                      try {
                          joiner.add(method.getName() + "=" + method.invoke(annotation).toString());
                      } catch (NullPointerException | IllegalArgumentException | IllegalAccessException | InvocationTargetException cause) {
                          throw new RuntimeException(
                              "Error while accessing member [" + method.getName() + "]"
                              + " of annotation [" + annotation.annotationType().getName() + "]", cause);
                      }
                  },
                  StringJoiner::merge)
              .toString();
      }
docs: Generates a unique signature for an {@link Annotation}.