Check the types of the two parts in the compute method

If the old part was a snapshot and not the new part, it could be
problematic as the isComparable function does not accept anything
other than a Snapshot.

Fixes #6