public void FV(HashSet<String> vars) { HashSet<String> bound = new HashSet<String>(); for (Binding b : Binding.valueBindings(bindings)) { bound.add(b.getName()); } for (Binding b : Binding.valueBindings(bindings)) { HashSet<String> free = new HashSet<String>(); b.FV(free); free.removeAll(bound); vars.addAll(free); } HashSet<String> free = new HashSet<String>(); for (BArm arm : arms) arm.FV(vars); init.FV(vars); name.FV(vars); free.removeAll(bound); vars.addAll(free); }