// (while synthesizing individual fields, try to match fields that exist in the real data)
for (Iterator<Tuple> it = outputConstraints.iterator(); it.hasNext(); ) {
Tuple outputConstraint = it.next();
// sanity check:
if (outputConstraint.arity() != schema.numFields()) throw new RuntimeException("Internal error: incorrect number of fields in constraint tuple.");
Tuple inputT = new Tuple(outputConstraint.arity());
ExampleTuple inputTuple = new ExampleTuple();
inputTuple.copyFrom(inputT);
for (int i = 0; i < inputTuple.arity(); i++) {