regenerate toString/hashCode/equals for Either