// new FilterOptimizer().optimize(query, bindings);
new EmptyPatternOptimizer(members).optimize(query, bindings);
boolean distinct = federation.isDistinct();
PrefixHashSet local = federation.getLocalPropertySpace();
new FederationJoinOptimizer(members, distinct, local).optimize(query, bindings);
new OwnedTupleExprPruner().optimize(query, bindings);
new QueryModelPruner().optimize(query, bindings);
new QueryJoinOptimizer(statistics).optimize(query, bindings);
new FederationFilterOptimizer().optimize(query, bindings);
statistics.await(); // let statistics throw any exceptions it has