GroupIterator extends CloseableIteratorIteration<BindingSet, QueryEvaluationException> { @Override public boolean hasNext() throws QueryEvaluationException { if (!initialized) { synchronized (lock) { if (!initialized) { super.setIterator(createIterator()); initialized = true; } } } return super.hasNext(); } GroupIterator(EvaluationStrategy strategy, Group group, BindingSet parentBindings);  GroupIterator(EvaluationStrategy strategy, Group group, BindingSet parentBindings,
			long iterationCacheSyncThreshold); @Override boolean hasNext(); @Override BindingSet next();  }
@Test public void testMaxEmptySet_Grouped() throws QueryEvaluationException { Group group = new Group(EMPTY_ASSIGNMENT); group.addGroupElement(new GroupElem("max", new Max(new Var("a")))); group.addGroupBindingName("x"); GroupIterator gi = new GroupIterator(evaluator, group, EmptyBindingSet.getInstance()); assertThat(gi.hasNext()).isFalse(); }