This class provides an interface to implement UE compatible iterators with a minimum set of implementation requirements. This provides the user with an easier way to implement custom iterators. The adapter uses a CRTP pattern requiring its base class to implement the following: