Path should be an option type. AddressAsInt32 was a lousy hashcode. SameAs should check all fields to determine equality.