code: public Expr invertCondition(Expr expr, WyilFile.Expr elem) {
  		if (expr instanceof Expr.Operator) {
  			Expr.Operator binTest = (Expr.Operator) expr;
  			switch (binTest.getOpcode()) {
  			case WyalFile.EXPR_eq:
  				return new Expr.NotEqual(binTest.getAll());
  			case WyalFile.EXPR_neq:
  				return new Expr.Equal(binTest.getAll());
  			case WyalFile.EXPR_gteq:
  				return new Expr.LessThan(binTest.getAll());
  			case WyalFile.EXPR_gt:
  				return new Expr.LessThanOrEqual(binTest.getAll());
  			case WyalFile.EXPR_lteq:
  				return new Expr.GreaterThan(binTest.getAll());
  			case WyalFile.EXPR_lt:
  				return new Expr.GreaterThanOrEqual(binTest.getAll());
  			case WyalFile.EXPR_and: {
  				Expr[] operands = invertConditions(binTest.getAll(), elem);
  				return new Expr.LogicalOr(operands);
  			}
  			case WyalFile.EXPR_or: {
  				Expr[] operands = invertConditions(binTest.getAll(), elem);
  				return new Expr.LogicalAnd(operands);
  			}
  			}
  		} else if (expr instanceof Expr.Is) {
  			Expr.Is ei = (Expr.Is) expr;
  			WyalFile.Type type = ei.getTestType();
  			return new Expr.Is(ei.getTestExpr(), new WyalFile.Type.Negation(type));
  		}
  		// Otherwise, compare against false
  		// FIXME: this is just wierd and needs to be fixed.
  		return new Expr.LogicalNot(expr);
  	}
docs: Generate the logically inverted expression corresponding to a given
  comparator. For example, inverting "<=" gives ">", inverting "==" gives "!=",
  etc.
  
  @param test
  --- the binary comparator being inverted.
  @return