public override bool Equals(object obj)
{
if (ReferenceEquals(null, obj)) return false;
if (ReferenceEquals(this, obj)) return true;
if (obj.GetType() != GetType()) return false;
var value = obj as AssociationInPackage;
if (value == null) return false;
return
Prop0 != null && value.Prop0 != null &&
Prop0.Equals(value.Prop0) &&
Prop1 != null && value.Prop1 != null &&
Prop1.Equals(value.Prop1) &&
Prop2 != null && value.Prop2 != null &&
Prop2.Equals(value.Prop2);
}