### Question:
DefaultStatementBuilder implements StatementBuilder,
	OngoingUpdate, OngoingReadingWithWhere, OngoingReadingWithoutWhere, OngoingMatchAndUpdate { @Override public OngoingReadingWithoutWhere match(PatternElement... pattern) { return this.match(false, pattern); } DefaultStatementBuilder();   DefaultStatementBuilder(ProcedureCall.Builder currentOngoingCall); @Override OngoingReadingWithoutWhere optionalMatch(PatternElement... pattern); @Override OngoingReadingWithoutWhere match(PatternElement... pattern); @Override @SuppressWarnings("unchecked") // This method returns `this`, implementing `OngoingUpdate` OngoingUpdate create(PatternElement... pattern); @Override @SuppressWarnings("unchecked") // This method returns `this`, implementing `OngoingUpdate` OngoingUpdate merge(PatternElement... pattern); @Override OngoingUnwind unwind(Expression expression); @Override OngoingReadingAndReturn returning(Expression... expressions); @Override OngoingReadingAndReturn returningDistinct(Expression... expressions); @Override OrderableOngoingReadingAndWith with(AliasedExpression... expressions); @Override OrderableOngoingReadingAndWithWithoutWhere with(Expression... expressions); @Override OrderableOngoingReadingAndWithWithoutWhere withDistinct(Expression... expressions); @Override @SuppressWarnings("unchecked") // This method returns `this`, implementing `OngoingUpdate` OngoingUpdate delete(Expression... expressions); @Override @SuppressWarnings("unchecked") // This method returns `this`, implementing `OngoingUpdate` OngoingUpdate detachDelete(Expression... expressions); @Override @SuppressWarnings("unchecked") // This method returns a `DefaultStatementWithUpdateBuilder`, implementing the necessary interfaces OngoingMatchAndUpdate set(Expression... expressions); @Override @SuppressWarnings("unchecked") // This method returns a `DefaultStatementWithUpdateBuilder`, implementing the necessary interfaces OngoingMatchAndUpdate set(Node named, String... label); @Override @SuppressWarnings("unchecked") // This method returns a `DefaultStatementWithUpdateBuilder`, implementing the necessary interfaces OngoingMatchAndUpdate remove(Property... properties); @Override @SuppressWarnings("unchecked") // This method returns a `DefaultStatementWithUpdateBuilder`, implementing the necessary interfaces OngoingMatchAndUpdate remove(Node named, String... label); @Override OngoingReadingWithWhere where(Condition newCondition); @Override OngoingReadingWithWhere and(Condition additionalCondition); @Override OngoingReadingWithWhere or(Condition additionalCondition); @Override Statement build(); @Override InQueryCallBuilder call(String... namespaceAndProcedure);  }### Answer:
@Test void matchPreconditionsShouldBeAsserted() { DefaultStatementBuilder builder = new DefaultStatementBuilder(); assertThatIllegalArgumentException().isThrownBy(() -> builder.match((PatternElement[]) null)) .withMessage("Patterns to match are required."); assertThatIllegalArgumentException().isThrownBy(() -> builder.match()) .withMessage("At least one pattern to match is required."); }