class_docstr: This class holds the state for learning a DFA. The current DFA can be
  accessed as the ``dfa`` member of this class. Such a DFA becomes invalid
  as soon as ``learn`` has been called, and should only be used until the
  next call to ``learn``.
  
  Note that many of the DFA methods are on this class, but it is not itself
  a DFA. The reason for this is that it stores mutable state which can cause
  the structure of the learned DFA to change in potentially arbitrary ways,
  making all cached properties become nonsense.
code: def __init__(self, member):
      self.experiments = []
      self.__experiment_set = set()
      self.normalizer = IntegerNormalizer()
  
      self.__member_cache = {}
      self.__member = member
      self.__generation = 0
  
      # A list of all state objects that correspond to strings we have
      # seen and can demonstrate map to unique states.
      self.__states = [
          DistinguishedState(
              index=0,
              label=b"",
              accepting=self.member(b""),
              experiments={b"": self.member(b"")},
          )
      ]
  
      # When we're trying to figure out what state a string leads to we will
      # end up searching to find a suitable candidate. By putting states in
      # a self-organising list we ideally minimise the number of lookups.
      self.__self_organising_states = SelfOrganisingList(self.__states)
  
      self.start = 0
  
      self.__dfa_changed()
  
imports: from bisect import bisect_right, insort
  from collections import Counter
  import attr
  from hypothesis.errors import InvalidState
  from hypothesis.internal.conjecture.dfa import DFA, cached
  from hypothesis.internal.conjecture.junkdrawer import IntList, NotFound, SelfOrganisingList, find_integer
label_desc: Use image node_id 1 to create a new LStar object  with example: obj = LStar(member)