Note that Equal methods must have the following properties
If the values have an Equal method of the form "(T) Equal(T) bool" or "(T) Equal(I) bool" where T is assignable to I, then use the result of x.Equal(y) even if x or y is nil. Otherwise, no such method exists and evaluation proceeds to the next rule.
We should add an Equal method to move.List. This allows us to use cmp.Equal
See
Note that Equal methods must have the following properties