001package daikon.diff; 002 003import daikon.inv.Invariant; 004import org.checkerframework.checker.nullness.qual.NonNull; 005import org.checkerframework.checker.nullness.qual.Nullable; 006import org.checkerframework.dataflow.qual.Pure; 007import org.plumelib.util.IPair; 008 009/** Contains a pair of Invariants. Resides in the third level of the tree. Has no children. */ 010public class InvNode extends Node<@Nullable Invariant, @NonNull Void> { 011 012 /** 013 * Either inv1 or inv2 may be null, but not both. 014 * 015 * @param inv1 an invariant 016 * @param inv2 an invariant 017 */ 018 public InvNode(@Nullable Invariant inv1, @Nullable Invariant inv2) { 019 super(IPair.of(inv1, inv2)); 020 assert !(inv1 == null && inv2 == null) : "Both invariants may not be null"; 021 } 022 023 @Pure 024 public @Nullable Invariant getInv1() { 025 return getUserLeft(); 026 } 027 028 @Pure 029 public @Nullable Invariant getInv2() { 030 return getUserRight(); 031 } 032 033 @Override 034 public void accept(Visitor v) { 035 v.visit(this); 036 } 037}