code: public static java.util.function.Function<Identifier, SyntacticItem> removeFromBinding(
  			java.util.function.Function<Identifier, SyntacticItem> binding, Tuple<Identifier> variables) {
  		return (Identifier var) -> {
  			// Sanity check whether this is a variable which is being removed
  			for (int i = 0; i != variables.size(); ++i) {
  				if (var.equals(variables.get(i))) {
  					return null;
  				}
  			}
  			// Not being removed, reuse existing binding
  			return binding.apply(var);
  		};
  	}
docs: Construct a binding function from another binding where a given set of
  variables are removed. This is necessary in situations where the given
  variables are captured.
  
  @param binding
  @param variables
  @return