public bool Add(NfaNode n) { if (m_node == null) { // m_node==null iff m_next==null m_next = new NList(); m_node = n; } else if (m_node.m_state < n.m_state) { m_next = new NList(m_node, m_next); m_node = n; } else if (m_node.m_state == n.m_state) { return(false); // Add fails, there already } else { return(m_next.Add(n)); } return(true); // was added }