docs: def _number_zero_start_handler(c, ctx):
      """Handles numeric values that start with zero or negative zero. Branches to delegate co-routines according to
      _ZERO_START_TABLE.
      """
      assert c == _ZERO
      assert len(ctx.value) == 0 or (len(ctx.value) == 1 and ctx.value[0] == _MINUS)
      ctx.set_ion_type(IonType.INT)
      ctx.value.append(c)
      c, _ = yield
      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))
          yield trans
      yield ctx.immediate_transition(_ZERO_START_TABLE[c](c, ctx))