+ private static final @NonNull Object NULL_DATA_OBJECT = new Object();
+ private static final VarHandle MODIFICATION_TYPE;
+ private static final VarHandle MODIFIED_CHILDREN;
+ private static final VarHandle DATA_BEFORE;
+ private static final VarHandle DATA_AFTER;
+
+ static {
+ final var lookup = MethodHandles.lookup();
+
+ try {
+ MODIFICATION_TYPE = lookup.findVarHandle(AbstractDataObjectModification.class, "modificationType",
+ ModificationType.class);
+ MODIFIED_CHILDREN = lookup.findVarHandle(AbstractDataObjectModification.class, "modifiedChildren",
+ ImmutableList.class);
+ DATA_BEFORE = lookup.findVarHandle(AbstractDataObjectModification.class, "dataBefore", Object.class);
+ DATA_AFTER = lookup.findVarHandle(AbstractDataObjectModification.class, "dataAfter", Object.class);
+ } catch (NoSuchFieldException | IllegalAccessException e) {
+ throw new ExceptionInInitializerError(e);
+ }
+ }