static void registerExtensionsFromFields(ExtensionRegistry registry, Class<?> clazz, Object instance) {
Preconditions.notNull(clazz, "Class must not be null");
Preconditions.notNull(registry, "ExtensionRegistry must not be null");
Predicate<Field> predicate = (instance == null) ? isStaticExtension : isNonStaticExtension;
List<Field> fields = new ArrayList<>(findAnnotatedFields(clazz, RegisterExtension.class, predicate));
fields.sort(orderComparator);
fields.forEach(field -> {
tryToReadFieldValue(field, instance).ifSuccess(value -> {
Preconditions.notNull(value, () -> String.format(
"Failed to register extension via @RegisterExtension field [%s]: field must not be null when evaluated.",
field));
Extension extension = (Extension) value;
registry.registerExtension(extension, field);
});
});
}