code: def _number_or_timestamp_handler(c, ctx):
      
      assert c in _DIGITS
      ctx.set_ion_type(IonType.INT)  # If this is the last digit read, this value is an Int.
      val = ctx.value
      val.append(c)
      c, self = yield
      trans = ctx.immediate_transition(self)
      while True:
          if _ends_value(c):
              trans = ctx.event_transition(IonThunkEvent, IonEventType.SCALAR,
                                           ctx.ion_type, _parse_decimal_int(ctx.value))
              if c == _SLASH:
                  trans = ctx.immediate_transition(_number_slash_end_handler(c, ctx, trans))
          else:
              if c not in _DIGITS:
                  trans = ctx.immediate_transition(_NUMBER_OR_TIMESTAMP_TABLE[c](c, ctx))
              else:
                  val.append(c)
          c, _ = yield trans
docs: Handles numeric values that start with digits 1-9. May terminate a value, in which case that value is an
      int. If it does not terminate a value, it branches to delegate co-routines according to _NUMBER_OR_TIMESTAMP_TABLE.