public bool AddReachedLabel(Statement label) { List <DefiniteAssignmentBitSet> das; if (LabelStack == null) { LabelStack = new Dictionary <Statement, List <DefiniteAssignmentBitSet> > (); das = null; } else { LabelStack.TryGetValue(label, out das); } if (das == null) { das = new List <DefiniteAssignmentBitSet> (); das.Add(new DefiniteAssignmentBitSet(DefiniteAssignment)); LabelStack.Add(label, das); return(false); } foreach (var existing in das) { if (DefiniteAssignmentBitSet.IsIncluded(existing, DefiniteAssignment)) { return(true); } } if (DefiniteAssignment == DefiniteAssignmentBitSet.Empty) { das.Add(DefiniteAssignment); } else { das.Add(new DefiniteAssignmentBitSet(DefiniteAssignment)); } return(false); }