@classmethod
def get_state_map(cls, description):
    """
        Construct a state map
        (collection of available FSM transitions)
        from the nonogram description.
        Use cached value if available.
        """
    nfsm_cls = cls.NFSM_CLASS
    state_map = cls.FSM_CACHE.get(description)
    if state_map is None:
        state_map = nfsm_cls.state_map_from_description(description)
        cls.FSM_CACHE.save(description, state_map)
    return state_map
