private static bool Equal <T>(TableSnapshot <T> x, TableSnapshot <T> y) where T : struct
 {
     return(ProjectTester.EqualCount(x, y) && x.Zip(y, (RowId xr, RowId yr) => {
         T xd, yd;
         x.GetData(xr, out xd);
         y.GetData(yr, out yd);
         foreach (IField <T> field in x.Fields)
         {
             if (field.Compare(ref xd, ref yd) != 0)
             {
                 return false;
             }
         }
         return true;
     }).All(r => r));
 }