BasicValue (BasicValue v1, BasicValue v2) { if (v1 instanceof LabeledNull) { if (v2 instanceof LabeledNull) { return new LabeledNull(((LabeledNull)v1).origins | ((LabeledNull)v2).origins); } else { return v1; } } else if (v2 instanceof LabeledNull) { return v2; } else if (v1 instanceof Calls calls1) { if (v2 instanceof Calls calls2) { return new Calls(calls1.mergedLabels | calls2.mergedLabels); } else { return v1; } } else if (v2 instanceof Calls) { return v2; } return super.merge(v1, v2); }