public BasicBlock(
 int id, IPreCondition[] preConditions, ISymbolTable postConditionSymbolTable, int[] successorKeys, BlockAssignment[] blockAssignments)
 {
     _preConditions = ArgumentUtility.CheckNotNull ("preConditions", preConditions);
       _postConditionSymbolTable = ArgumentUtility.CheckNotNull ("postConditionSymbolTable", postConditionSymbolTable);
       _successorKeys = ArgumentUtility.CheckNotNull ("successorKeys", successorKeys);
       _id = id;
       _blockAssignments = blockAssignments;
 }
 private void CheckPreConditions(IPreCondition[] preconditions, ISymbolTable context)
 {
     foreach (IPreCondition preCondition in preconditions)
       {
     if(preCondition.IsViolated(context))
     {
       preCondition.HandleViolation (context, _problemPipe);
     }
       }
 }