The only difference between `Find` and `FindOrElse` seems to be that `Find` assert fails whereas `FindOrElse` throws an exception. The behavior of `FindOrElse` seems to be equivalent to the `at` member function. Do we still want `FindOrElse`?