docs: def _coefficient_handler_factory(trans_table, parse_func, assertion=lambda c, ctx: True,
                                   ion_type=None, append_first_if_not=None):
      """Generates a handler co-routine which tokenizes a numeric coefficient.
  
      Args:
          trans_table (dict): lookup table for the handler for the next component of this numeric token, given the
              ordinal of the first character in that component.
          parse_func (callable): Called upon ending the numeric value. Accepts the current token value and returns a
              thunk that lazily parses the token.
          assertion (callable): Accepts the first character's ordinal and the current context. Returns True if this is
              a legal start to the component.
          ion_type (Optional[IonType]): The type of the value if it were to end on this coefficient.
          append_first_if_not (Optional[int]): The ordinal of a character that should not be appended to the token if
              it occurs first in this component (e.g. an underscore in many cases).
      """
      def transition(prev, c, ctx, trans):
          if prev == _UNDERSCORE:
              _illegal_character(c, ctx, 'Underscore before %s.' % (_chr(c),))
          return ctx.immediate_transition(trans_table[c](c, ctx))
      return _numeric_handler_factory(_DIGITS, transition, assertion, (_DOT,), parse_func,
                                      ion_type=ion_type, append_first_if_not=append_first_if_not)