code: def next(self):
          
          # Check the state and find the next match as a side-effect if necessary.
          if not self.has_next():
              raise StopIteration("No next match")
          # Don't retain that memory any longer than necessary.
          result = self._last_match
          self._last_match = None
          self._state = PhoneNumberMatcher._NOT_READY
          return result
docs: Return the next match; raises Exception if no next match available