code: def _channel_type_old(info, idx):
      """Get channel type using old, slower scheme."""
      ch = info["chs"][idx]
  
      # iterate through all defined channel types until we find a match with ch
      # go in order from most specific (most rules entries) to least specific
      channel_types = sorted(
          get_channel_type_constants().items(),
          key=lambda x: len(x[1]),
          reverse=True,
      )
      for t, rules in channel_types:
          for (
              key,
              vals,
          ) in rules.items():  # all keys must match the values
              if ch.get(key, None) not in np.array(vals):
                  break  # not channel type t, go to next iteration
          else:
              return t
  
      raise ValueError(f'Unknown channel type for {ch["ch_name"]}')
  
imports: from copy import deepcopy
  from pathlib import Path
  import numpy
  import pytest
  from numpy.testing import assert_array_equal
  from mne import Epochs, channel_indices_by_type, channel_type, create_info, make_ad_hoc_cov, pick_channels, pick_channels_cov, pick_channels_regexp, pick_info, pick_types, pick_types_forward, read_forward_solution, rename_channels
  from mne._fiff.constants import FIFF
  from mne._fiff.pick import _DATA_CH_TYPES_SPLIT, _contains_ch_type, _picks_by_type, _picks_to_idx, get_channel_type_constants
  from mne.channels import make_standard_montage
  from mne.datasets import testing
  from mne.io import RawArray, read_info, read_raw_bti, read_raw_fif, read_raw_kit
  from mne.preprocessing import compute_current_source_density
  from mne.utils import assert_object_equal, catch_logging
label_desc: Use image node_id 2 for calling a global function with example usage: _channel_type_old(info, idx) and returns: t