public Snapshot TakeSingletonSnapshot(object entity)
 {
     if (entity == null)
     {
         return Snapshot.Null;
     }
     var snapshot = new Snapshot(entity);
     if (IsValueSource(entity))
     {
         snapshot.Add(Property, GetValue(entity));
     }
     return snapshot;
 }
 public abstract IPropertyChange GetChange(Snapshot original, Snapshot updated);