ParamsValue (ParamsValue v1, ParamsValue v2) { if (v1.equals(v2)) return v1; boolean[] params = new boolean[arity]; boolean[] params1 = v1.params; boolean[] params2 = v2.params; for (int i = 0; i < arity; i++) { params[i] = params1[i] || params2[i]; } return new ParamsValue(params, Math.min(v1.size, v2.size)); }