// Compute which symbols cannot yet be bound from the current environment
IPersistentSet unbound=free;
for (ISeq s=RT.seq(unbound);s!=null; s=s.next()) {
Symbol sym=(Symbol) s.first();
if (isBound(sym)) {
unbound=unbound.disjoin(sym);
}
}
if (unbound.count()==0) {
Environment newEnv=body.compute(this, bindings);