docs: def _bind_length_handlers(tids, user_handler, lns):
      """Binds a set of handlers with the given factory.
  
      Args:
          tids (Sequence[int]): The Type IDs to bind to.
          user_handler (Callable): A function that takes as its parameters
              :class:`IonType`, ``length``, and the ``ctx`` context
              returning a co-routine.
          lns (Sequence[int]): The low-nibble lengths to bind to.
      """
      for tid in tids:
          for ln in lns:
              type_octet = _gen_type_octet(tid, ln)
              ion_type = _TID_VALUE_TYPE_TABLE[tid]
              if ln == 1 and ion_type is IonType.STRUCT:
                  handler = partial(_ordered_struct_start_handler, partial(user_handler, ion_type))
              elif ln < _LENGTH_FIELD_FOLLOWS:
                  # Directly partially bind length.
                  handler = partial(user_handler, ion_type, ln)
              else:
                  # Delegate to length field parsing first.
                  handler = partial(_var_uint_field_handler, partial(user_handler, ion_type))
              _HANDLER_DISPATCH_TABLE[type_octet] = handler