public override bool Compare(object before, object after)
    {
        if (before is PublicGetPublicSet)
        {
            var beforeA = (PublicGetPublicSet)before;
            var afterA  = (PublicGetPublicSet)after;

            return(beforeA.Value == afterA.Value);
        }

        if (before is PrivateGetPublicSet)
        {
            var beforeA = (PrivateGetPublicSet)before;
            var afterA  = (PrivateGetPublicSet)after;

            return(PrivateGetPublicSet.Compare(beforeA, afterA));
        }

        if (before is PublicGetPrivateSet)
        {
            var beforeA = (PublicGetPrivateSet)before;
            var afterA  = (PublicGetPrivateSet)after;

            return(beforeA.Value == afterA.Value);
        }

        if (after is PrivateGetPrivateSet)
        {
            return(((PrivateGetPrivateSet)after).Verify());
        }

        throw new Exception("Unknown type");
    }
 public static bool Compare(PrivateGetPublicSet a, PrivateGetPublicSet b)
 {
     return(a.Value == b.Value);
 }