It is currently possible to create such an instance in an inconsistent state: the metric value calculated from data_dist and hypo_maker does not need to agree with the externally computed metric_val.
Such a state is unlikely to be desired and should arguably result in an exception.