If iterator points to end() and trydecrement fails, we will call key() on nullptr (leaf == nullptr for end())
Problem mentioned by lukaszstolarczuk is caused by a lack of special value for begin(). When we use operator++ and encounter end() we know it's time to stop. For operator-- be cannot rely on comparison with begin() since its value can change. We could introduce a special past-begin iterator for this purpose.
operator-- may fail (when MtMode is enabled) in some specific cases, e.g.:
ref. #1156