package project.Entrytypes;
import java.util.*;
import org.overture.codegen.runtime.*;
import org.overture.codegen.vdm2jml.runtime.*;
@SuppressWarnings("all")
//@ nullable_by_default
final public class R1 implements Record {
public project.Entrytypes.R2 r2;
//@ public instance invariant project.Entry.invChecksOn ==> inv_R1(r2);
public R1(final project.Entrytypes.R2 _r2) {
//@ assert Utils.is_(_r2,project.Entrytypes.R2.class);
r2 = _r2 != null ? Utils.copy(_r2) : null;
//@ assert Utils.is_(r2,project.Entrytypes.R2.class);
}
/*@ pure @*/
public boolean equals(final Object obj) {
if (!(obj instanceof project.Entrytypes.R1)) {
return false;
}
project.Entrytypes.R1 other = ((project.Entrytypes.R1) obj);
return Utils.equals(r2, other.r2);
}
/*@ pure @*/
public int hashCode() {
return Utils.hashCode(r2);
}
/*@ pure @*/
public project.Entrytypes.R1 copy() {
return new project.Entrytypes.R1(r2);
}
/*@ pure @*/
public String toString() {
return "mk_Entry`R1" + Utils.formatFields(r2);
}
/*@ pure @*/
public project.Entrytypes.R2 get_r2() {
project.Entrytypes.R2 ret_3 = r2;
//@ assert project.Entry.invChecksOn ==> (Utils.is_(ret_3,project.Entrytypes.R2.class));
return ret_3;
}
public void set_r2(final project.Entrytypes.R2 _r2) {
//@ assert project.Entry.invChecksOn ==> (Utils.is_(_r2,project.Entrytypes.R2.class));
r2 = _r2;
//@ assert project.Entry.invChecksOn ==> (Utils.is_(r2,project.Entrytypes.R2.class));
}
/*@ pure @*/
public Boolean valid() {
return true;
}
/*@ pure @*/
/*@ helper @*/
public static Boolean inv_R1(final project.Entrytypes.R2 _r2) {
Object obj_2 = Utils.copy(_r2.t3);
project.Entrytypes.R4 apply_6 = null;
if (obj_2 instanceof project.Entrytypes.R3) {
apply_6 = Utils.copy(((project.Entrytypes.R3) obj_2).r4);
} else {
throw new RuntimeException("Missing member: r4");
}
return !(Utils.equals(apply_6.x, 1L));
}
/*@ pure @*/
/*@ helper @*/
public static Boolean inv_Entry_T3(final Object check_t3) {
Object t3 = ((Object) check_t3);
Boolean andResult_1 = false;
Boolean orResult_1 = false;
if (!(Utils.is_(t3, project.Entrytypes.R3.class))) {
orResult_1 = true;
} else {
project.Entrytypes.R4 apply_9 = null;
if (t3 instanceof project.Entrytypes.R3) {
apply_9 = ((project.Entrytypes.R3) t3).get_r4();
} else {
throw new RuntimeException("Missing member: r4");
}
orResult_1 = !(Utils.equals(apply_9.get_x(), 10L));
}
if (orResult_1) {
Boolean orResult_2 = false;
if (!(Utils.is_(t3, project.Entrytypes.X.class))) {
orResult_2 = true;
} else {
Boolean apply_10 = null;
if (t3 instanceof project.Entrytypes.X) {
apply_10 = ((project.Entrytypes.X) t3).get_b();
} else {
throw new RuntimeException("Missing member: b");
}
orResult_2 = apply_10;
}
if (orResult_2) {
andResult_1 = true;
}
}
return andResult_1;
}
}