### Question:
DefaultFunction implements Function<T> { public final StepCondition isNull() { return LeafStepCondition.isNull(this); } DefaultFunction(M metadata, BiFunction<FieldModel, Context, Optional<T>> function); Optional<T> value(FieldModel model, Context context); M getMetadata(); BiFunction<FieldModel, Context, Optional<T>> getFunction(); @Override String readable(); final IterableFunction<TagId, List<TagId>> tags(); final IntegerFunction position(); final StepCondition isNull(); final StepCondition isNotNull(); final StepCondition eq(T value); @Deprecated final StepCondition eq(Supplier<T> supplier); final StepCondition eq(BaseFieldInfo<T> value); final StepCondition eq(Function<T> value); final StepCondition notEq(T value); @Deprecated final StepCondition notEq(Supplier<T> supplier); final StepCondition notEq(BaseFieldInfo<T> value); final StepCondition notEq(Function<T> value); @SafeVarargs final StepCondition anyMatch(T... values); final StepCondition anyMatch(Collection<T> values); final StepCondition anyMatch(List<Predicate<T>> values, String... predicateReadables); @SafeVarargs final StepCondition allMatch(T... values); final StepCondition allMatch(Collection<T> values); final StepCondition allMatch(List<Predicate<T>> values, String... predicateReadables); @SafeVarargs final StepCondition noneMatch(T... values); final StepCondition noneMatch(Collection<T> values); final StepCondition noneMatch(List<Predicate<T>> values, String... predicateReadables); @Deprecated final IntegerFunction mapToInt(java.util.function.Function<T, Integer> mapper); final IntegerFunction mapToInt(String readable, java.util.function.Function<T, Integer> mapper); @Deprecated final StringFunction mapToString(java.util.function.Function<T, String> mapper); final StringFunction mapToString(String readable, java.util.function.Function<T, String> mapper); final DefaultFunction<R, MapFunctionMetadata> map(String readable, java.util.function.Function<T, R> mapper); final DefaultFunction<R, MapFunctionMetadata> mapUsing(String readable,
            io.doov.core.dsl.field.types.Function<U> condition,
            BiFunction<T, U, R> mapper);  }### Answer:
@Test void isNull() { rule = when(A.isNull()).validate(); result = rule.executeOn(model); reduce = result.reduce(FAILURE); assertFalse(result.value()); assertThat(rule.readable(LOCALE)).isEqualTo("rule when A is null validate"); assertThat(result.getFailureCause(LOCALE)).isEqualTo("A is null"); }