code: def info(self, *args, **kwargs):
      if "_n" in kwargs:
          n_key_values = kwargs["_n"]
          del kwargs["_n"]
      else:
          n_key_values = 10
  
      if "_expand" in kwargs:
          is_expand = kwargs["_expand"]
          del kwargs["_expand"]
      else:
          is_expand = None
  
      if len(args) == 0 and len(kwargs) == 1 and is_expand != True:
          self.parts.append(
              [(next(iter(kwargs.keys())), [Text.heading, Text.key])]
          )
          args = [next(iter(kwargs.values()))]
          kwargs = {}
  
      if is_expand is None:
          is_expand = False
  
      if len(args) == 0:
          self._log_key_value(
              [(k, v) for k, v in kwargs.items()],
              is_show_count=False,
              n_key_values=n_key_values,
              is_expand=is_expand,
          )
      elif len(args) == 1:
          assert len(kwargs.keys()) == 0
          arg = args[0]
          if isinstance(arg, collections.UserList):
              arg = list(*arg)
  
          if isinstance(arg, list) or isinstance(arg, tuple):
              self._log_key_value(
                  [(i, v) for i, v in enumerate(arg)],
                  n_key_values=n_key_values,
                  is_expand=is_expand,
              )
              return
  
          if isinstance(arg, collections.UserDict):
              arg = dict(**arg)
          if isinstance(arg, dict):
              keys = list(arg.keys())
              keys.sort(key=lambda x: str(x))
              self._log_key_value(
                  [(k, arg[k]) for k in keys],
                  n_key_values=n_key_values,
                  is_expand=is_expand,
              )
  
              return
  
          from labml.internal.analytics.models import ValueCollection
  
          if isinstance(arg, ValueCollection):
              self._log_key_value(
                  [(i, v) for i, v in enumerate(arg.keys())],
                  n_key_values=n_key_values,
                  is_expand=is_expand,
              )
              return
  
          self.parts.append(_get_value_full(arg))
      else:
          assert len(kwargs.keys()) == 0
          self._log_key_value(
              [(i, v) for i, v in enumerate(args)],
              is_show_count=False,
              n_key_values=n_key_values,
              is_expand=is_expand,
          )
  
imports: import collections
  import math
  from typing import TYPE_CHECKING, List, Tuple
  from labml.internal.util.colors import StyleCode
  from ....logger import Text
label_desc: Use image node_id 3 for calling the _InspectLogger obj's underlying member method code with example usage: obj.info() without return types