private static void queue(@Nullable Object value,
                            @Nullable Field field,
                            @Nullable String fieldName,
                            @NotNull BackLink<?> backLink,
                            @NotNull Deque<? super BackLink<?>> queue,
                            @NotNull Predicate<Object> shouldExamineValue) {
    if (value == null || isTrivial(value.getClass())) {
      return;
    }
    if (shouldExamineValue.test(value)) {
      queue.addLast(new BackLink<>(value, field, fieldName, backLink));
    }
  }
private static void queue(@Nullable Object value,
                            @Nullable Field field,
                            @Nullable String fieldName,
                            @NotNull BackLink<?> backLink,
                            @NotNull Deque<? super BackLink<?>> queue,
                            @NotNull Predicate<Object> shouldExamineValue)