private IEnumerable <ProgramState> TrySetConstraints(SymbolicValueConstraints constraints, ProgramState programState, bool isOppositeConstraints) { IEnumerable <ProgramState> programStates = new [] { programState }; if (constraints == null) { return(programStates); } foreach (var constraint in constraints.GetConstraints()) { programStates = programStates.SelectMany(ps => isOppositeConstraints ? TrySetOppositeConstraint(constraint, ps) : TrySetConstraint(constraint, ps)); } return(programStates); }