class_docstr: A concrete representation of a DFA in terms of an explicit list
  of states.
class_docstr_tok: ["A","concrete","representation","of","a","DFA","in","terms","of","an","explicit","list","of","states","."]
docstr: Returns the state that i transitions to on reading
  character c from a string.
docstr_tok: ["Returns","the","state","that","i","transitions","to","on","reading","character","c","from","a","string","."]
code: def transition(self, state, char):
      """Returns the state that i transitions to on reading
      character c from a string."""
      if state == DEAD:
          return DEAD
  
      table = self.__transitions[state]
  
      # Given long transition tables we convert them to
      # dictionaries for more efficient lookup.
      if not isinstance(table, dict) and len(table) >= 5:
          new_table = {}
          for t in table:
              if len(t) == 2:
                  new_table[t[0]] = t[1]
              else:
                  u, v, j = t
                  for c in range(u, v + 1):
                      new_table[c] = j
          self.__transitions[state] = new_table
          table = new_table
  
      if isinstance(table, dict):
          try:
              return self.__transitions[state][char]
          except KeyError:
              return DEAD
      else:
          for t in table:
              if len(t) == 2:
                  if t[0] == char:
                      return t[1]
              else:
                  u, v, j = t
                  if u <= char <= v:
                      return j
          return DEAD
  
imports: import threading
  from collections import Counter, defaultdict, deque
  from math import inf
  from hypothesis.internal.reflection import proxies
label_desc: Use image node_id 5 for calling the ConcreteDFA obj's underlying member method code with example usage: obj.transition(state, char) and returns: DEAD, DEAD, self, DEAD, t, j