Program: 74473
Project: 74473
Buggy source:
/** 
 * Generate all premise-action pairs regarding this FmvAutomaton. For example, this method may generate (state=red)&&(count=1):{grn}.  The premise is "(state=red)&&(count=1)", and the action is "{grn}" This can only be applied when the domain of variable is decided.
 * @param actor The actor under analysis
 * @param variableSet The set of variables used 
 * @throws IllegalActionException
 */
private static void _generateAllVariableTransitions(FSMActor actor,HashSet<String> variableSet) throws IllegalActionException {
  HashSet<State> stateSet=new HashSet<State>();
  HashMap<String,State> frontier=new HashMap<String,State>();
  _variableTransitionInfo=new HashMap<String,LinkedList<VariableTransitionInfo>>();
  Iterator<String> vit=variableSet.iterator();
  while (vit.hasNext()) {
    String v=vit.next();
    LinkedList<VariableTransitionInfo> l=new LinkedList<VariableTransitionInfo>();
    _variableTransitionInfo.put(v,l);
  }
  LinkedList<VariableTransitionInfo> l=new LinkedList<VariableTransitionInfo>();
  _variableTransitionInfo.put("String_Node_Str",l);
  State stateInThis=actor.getInitialState();
  String name=stateInThis.getName();
  frontier.put(name,stateInThis);
  while (!frontier.isEmpty()) {
    Iterator<String> iterator=frontier.keySet().iterator();
    name=(String)iterator.next();
    stateInThis=(State)frontier.remove(name);
    if (stateInThis == null) {
      throw new IllegalActionException("String_Node_Str" + name + "String_Node_Str");
    }
    ComponentPort outPort=stateInThis.outgoingPort;
    Iterator transitions=outPort.linkedRelationList().iterator();
    while (transitions.hasNext()) {
      StringBuffer signalPremise=new StringBuffer("String_Node_Str");
      Transition transition=(Transition)transitions.next();
      State destinationInThis=transition.destinationState();
      if (!stateSet.contains(destinationInThis)) {
        frontier.put(destinationInThis.getName(),destinationInThis);
        stateSet.add(destinationInThis);
      }
      boolean hasAnnotation=false;
      String text;
      try {
        text=transition.annotation.stringValue();
      }
 catch (      IllegalActionException e) {
        text="String_Node_Str" + e.getMessage();
      }
      if (!text.trim().equals("String_Node_Str")) {
        hasAnnotation=true;
      }
      String guard=transition.getGuardExpression();
      String setAction=transition.setActions.getExpression();
      String outputAction=transition.outputActions.getExpression();
      HashSet<String> variableUsedInTransitionSet=new HashSet<String>();
      if ((guard != null) && !guard.trim().equals("String_Node_Str")) {
        if (hasAnnotation) {
        }
 else {
          String[] guardSplitExpression=guard.split("String_Node_Str");
          if (guardSplitExpression.length != 0) {
            for (int i=0; i < guardSplitExpression.length; i++) {
              String subGuardCondition=guardSplitExpression[i].trim();
              String[] characterOfSubGuard=subGuardCondition.split("String_Node_Str");
              String lValue=characterOfSubGuard[0].trim();
              boolean b=Pattern.matches("String_Node_Str",characterOfSubGuard[0].trim());
              if (b == true) {
                signalPremise.append(characterOfSubGuard[0].trim() + "String_Node_Str");
              }
 else {
                boolean isTrue=false;
                String rValue=null;
                try {
                  rValue=characterOfSubGuard[1].trim();
                }
 catch (                Exception ex) {
                  isTrue=true;
                }
                if (isTrue == false) {
                  variableUsedInTransitionSet.add(lValue);
                }
              }
            }
          }
        }
      }
      if ((setAction != null) && !setAction.trim().equals("String_Node_Str")) {
        String[] setActionSplitExpression=setAction.split("String_Node_Str");
        if (setActionSplitExpression.length != 0) {
          for (int i=0; i < setActionSplitExpression.length; i++) {
            String subSetActionCondition=setActionSplitExpression[i].trim();
            String[] characterOfSubSetAction=subSetActionCondition.split("String_Node_Str");
            String lValue=characterOfSubSetAction[0].trim();
            variableUsedInTransitionSet.add(lValue);
          }
        }
      }
      if ((outputAction != null) && !outputAction.trim().equals("String_Node_Str")) {
        String[] outputActionSplitExpression=outputAction.split("String_Node_Str");
        if (outputActionSplitExpression.length != 0) {
          for (int i=0; i < outputActionSplitExpression.length; i++) {
            String subOutputActionCondition=outputActionSplitExpression[i].trim();
            String[] characterOfSubOutputAction=subOutputActionCondition.split("String_Node_Str");
            String lValue=characterOfSubOutputAction[0].trim();
            variableUsedInTransitionSet.add(lValue + "String_Node_Str");
          }
        }
      }
      HashMap<String,ArrayList<Integer>> valueDomain=new HashMap<String,ArrayList<Integer>>();
      Iterator<String> it=variableUsedInTransitionSet.iterator();
      while (it.hasNext()) {
        String val=(String)it.next();
        boolean b=Pattern.matches("String_Node_Str",val);
        if (b == true) {
          VariableInfo variableInfo=_variableInfo.get(val);
          if (variableInfo == null) {
            throw new IllegalActionException("String_Node_Str" + val + "String_Node_Str");
          }
 else {
            if (variableInfo._minValue != null && variableInfo._maxValue != null) {
              int lowerBound=Integer.parseInt(variableInfo._minValue);
              int upperBound=Integer.parseInt(variableInfo._maxValue);
              ArrayList<Integer> variableDomainForTransition=new ArrayList<Integer>();
              for (int number=lowerBound; number <= upperBound; number++) {
                variableDomainForTransition.add(Integer.valueOf(number));
              }
              valueDomain.put(val,variableDomainForTransition);
            }
          }
        }
 else {
          VariableInfo variableInfo=_variableInfo.get(val);
          if (variableInfo == null) {
            throw new IllegalActionException("String_Node_Str" + val + "String_Node_Str");
          }
 else {
            if (variableInfo._minValue != null && variableInfo._maxValue != null) {
              int lowerBound=Integer.parseInt(variableInfo._minValue);
              int upperBound=Integer.parseInt(variableInfo._maxValue);
              ArrayList<Integer> variableDomainForTransition=new ArrayList<Integer>();
              variableDomainForTransition.add(DOMAIN_LS);
              for (int number=lowerBound; number <= upperBound; number++) {
                variableDomainForTransition.add(Integer.valueOf(number));
              }
              variableDomainForTransition.add(DOMAIN_GT);
              valueDomain.put(val,variableDomainForTransition);
            }
          }
        }
      }
      if ((guard != null) && !guard.trim().equals("String_Node_Str")) {
        if (hasAnnotation) {
        }
 else {
          String[] guardSplitExpression=guard.split("String_Node_Str");
          if (guardSplitExpression.length != 0) {
            for (int i=0; i < guardSplitExpression.length; i++) {
              String subGuardCondition=guardSplitExpression[i].trim();
              String[] characterOfSubGuard=subGuardCondition.split("String_Node_Str");
              String lValue=characterOfSubGuard[0].trim();
              boolean b=Pattern.matches("String_Node_Str",characterOfSubGuard[0].trim());
              if (b == true) {
              }
 else {
                boolean parse=true;
                String rValue=null;
                try {
                  rValue=characterOfSubGuard[1].trim();
                }
 catch (                Exception ex) {
                  parse=false;
                }
                if (parse == true) {
                  if (Pattern.matches("String_Node_Str",rValue) == true) {
                    int numberRetrival=Integer.parseInt(rValue);
                    if (Pattern.matches("String_Node_Str",subGuardCondition)) {
                      ArrayList<Integer> domain=valueDomain.remove(lValue);
                      if (domain == null) {
                        throw new IllegalActionException("String_Node_Str" + lValue + "String_Node_Str");
                      }
 else {
                        for (int j=domain.size() - 1; j >= 0; j--) {
                          if (domain.get(j).intValue() != numberRetrival) {
                            domain.remove(j);
                          }
                        }
                        valueDomain.put(lValue,domain);
                      }
                    }
 else                     if (Pattern.matches("String_Node_Str",subGuardCondition)) {
                      ArrayList<Integer> domain=valueDomain.remove(lValue);
                      if (domain == null) {
                        throw new IllegalActionException("String_Node_Str" + lValue + "String_Node_Str");
                      }
 else {
                        for (int j=domain.size() - 1; j >= 0; j--) {
                          if (domain.get(j).intValue() == numberRetrival) {
                            domain.remove(j);
                          }
                        }
                        valueDomain.put(lValue,domain);
                      }
                    }
 else                     if (Pattern.matches("String_Node_Str",subGuardCondition)) {
                      ArrayList<Integer> domain=valueDomain.remove(lValue);
                      if (domain == null) {
                        throw new IllegalActionException("String_Node_Str" + lValue + "String_Node_Str");
                      }
 else {
                        for (int j=domain.size() - 1; j >= 0; j--) {
                          if (domain.get(j).intValue() > numberRetrival) {
                            domain.remove(j);
                          }
                        }
                        valueDomain.put(lValue,domain);
                      }
                    }
 else                     if (Pattern.matches("String_Node_Str",subGuardCondition)) {
                      ArrayList<Integer> domain=valueDomain.remove(lValue);
                      if (domain == null) {
                        throw new IllegalActionException("String_Node_Str" + lValue + "String_Node_Str");
                      }
 else {
                        for (int j=domain.size() - 1; j >= 0; j--) {
                          if (domain.get(j).intValue() < numberRetrival) {
                            domain.remove(j);
                          }
                        }
                        valueDomain.put(lValue,domain);
                      }
                    }
 else                     if (Pattern.matches("String_Node_Str",subGuardCondition)) {
                      ArrayList<Integer> domain=valueDomain.remove(lValue);
                      if (domain == null) {
                        throw new IllegalActionException("String_Node_Str" + lValue + "String_Node_Str");
                      }
                      for (int j=domain.size() - 1; j >= 0; j--) {
                        if (domain.get(j).intValue() <= numberRetrival) {
                          domain.remove(j);
                        }
                      }
                      valueDomain.put(lValue,domain);
                    }
 else                     if (Pattern.matches("String_Node_Str",subGuardCondition)) {
                      ArrayList<Integer> domain=valueDomain.remove(lValue);
                      if (domain == null) {
                        throw new IllegalActionException("String_Node_Str" + lValue + "String_Node_Str");
                      }
 else {
                        for (int j=domain.size() - 1; j >= 0; j--) {
                          if (domain.get(j).intValue() >= numberRetrival) {
                            domain.remove(j);
                          }
                        }
                        valueDomain.put(lValue,domain);
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
      String setActionExpression=transition.setActions.getExpression();
      if ((setActionExpression != null) && !setActionExpression.trim().equals("String_Node_Str")) {
        String[] splitExpression=setActionExpression.split("String_Node_Str");
        for (int i=0; i < splitExpression.length; i++) {
          String[] characters=splitExpression[i].split("String_Node_Str");
          if (characters.length >= 1) {
            String lValue=characters[0].trim();
            String rValue=characters[1].trim();
            if (Pattern.matches("String_Node_Str",characters[1].trim()) == true) {
              String statePrecondition="String_Node_Str" + stateInThis.getDisplayName();
              _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,lValue,rValue,"String_Node_Str");
              _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,"String_Node_Str",destinationInThis.getDisplayName(),"String_Node_Str");
            }
 else {
              if (Pattern.matches("String_Node_Str",rValue)) {
                String[] rValueOperends=rValue.split("String_Node_Str");
                String offset=rValueOperends[1].trim();
                try {
                  int value=Integer.parseInt(rValueOperends[1].trim());
                }
 catch (                Exception ex) {
                  if (rValueOperends[1].trim().endsWith("String_Node_Str") && rValueOperends[1].trim().startsWith("String_Node_Str")) {
                    offset=rValueOperends[1].trim().substring(1,rValueOperends[1].trim().length() - 1);
                    try {
                      Integer.parseInt(offset);
                    }
 catch (                    Exception exInner) {
                      throw new IllegalActionException("String_Node_Str" + exInner.getMessage());
                    }
                  }
                }
                String statePrecondition="String_Node_Str" + stateInThis.getDisplayName();
                _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,lValue,offset,"String_Node_Str");
                _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,"String_Node_Str",destinationInThis.getDisplayName(),"String_Node_Str");
              }
 else               if (Pattern.matches("String_Node_Str",rValue)) {
                String[] rValueOperends=rValue.split("String_Node_Str");
                String offset=rValueOperends[1].trim();
                try {
                  int value=Integer.parseInt(rValueOperends[1].trim());
                }
 catch (                Exception ex) {
                  if (rValueOperends[1].trim().endsWith("String_Node_Str") && rValueOperends[1].trim().startsWith("String_Node_Str")) {
                    offset=rValueOperends[1].trim().substring(1,rValueOperends[1].trim().length() - 1);
                    try {
                      Integer.parseInt(offset);
                    }
 catch (                    Exception exInner) {
                      throw new IllegalActionException("String_Node_Str" + exInner.getMessage());
                    }
                  }
                }
                String statePrecondition="String_Node_Str" + stateInThis.getDisplayName();
                _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,lValue,offset,"String_Node_Str");
                _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,"String_Node_Str",destinationInThis.getDisplayName(),"String_Node_Str");
              }
 else               if (Pattern.matches("String_Node_Str",rValue)) {
                String[] rValueOperends=rValue.split("String_Node_Str");
                String offset=rValueOperends[1].trim();
                try {
                  int value=Integer.parseInt(rValueOperends[1].trim());
                }
 catch (                Exception ex) {
                  if (rValueOperends[1].trim().endsWith("String_Node_Str") && rValueOperends[1].trim().startsWith("String_Node_Str")) {
                    offset=rValueOperends[1].trim().substring(1,rValueOperends[1].trim().length() - 1);
                    try {
                      Integer.parseInt(offset);
                    }
 catch (                    Exception exInner) {
                    }
                  }
                }
                String statePrecondition="String_Node_Str" + stateInThis.getDisplayName();
                _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,lValue,rValueOperends[1].trim(),"String_Node_Str");
                _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,"String_Node_Str",destinationInThis.getDisplayName(),"String_Node_Str");
              }
 else               if (Pattern.matches("String_Node_Str",rValue)) {
                String[] rValueOperends=rValue.split("String_Node_Str");
                String offset=rValueOperends[1].trim();
                try {
                  int value=Integer.parseInt(rValueOperends[1].trim());
                }
 catch (                Exception ex) {
                  if (rValueOperends[1].trim().endsWith("String_Node_Str") && rValueOperends[1].trim().startsWith("String_Node_Str")) {
                    offset=rValueOperends[1].trim().substring(1,rValueOperends[1].trim().length() - 1);
                    try {
                      Integer.parseInt(offset);
                    }
 catch (                    Exception exInner) {
                    }
                  }
                }
                String statePrecondition="String_Node_Str" + stateInThis.getDisplayName();
                _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,lValue,rValueOperends[1].trim(),"String_Node_Str");
                _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,"String_Node_Str",destinationInThis.getDisplayName(),"String_Node_Str");
              }
            }
          }
        }
      }
 else {
        String statePrecondition="String_Node_Str" + stateInThis.getDisplayName();
        _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,"String_Node_Str",destinationInThis.getDisplayName(),"String_Node_Str");
      }
      String outputActionExpression=transition.outputActions.getExpression();
      if ((outputActionExpression != null) && !outputActionExpression.trim().equals("String_Node_Str")) {
        String[] splitExpression=outputActionExpression.split("String_Node_Str");
        for (int i=0; i < splitExpression.length; i++) {
          String[] characters=splitExpression[i].split("String_Node_Str");
          String lValue=characters[0].trim();
          String statePrecondition="String_Node_Str" + stateInThis.getDisplayName();
          _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,lValue + "String_Node_Str","String_Node_Str","String_Node_Str");
        }
      }
    }
  }
}

Fixed version (ground truth):
/** 
 * Generate all premise-action pairs regarding this FmvAutomaton. For example, this method may generate (state=red)&&(count=1):{grn}.  The premise is "(state=red)&&(count=1)", and the action is "{grn}" This can only be applied when the domain of variable is decided.
 * @param actor The actor under analysis
 * @param variableSet The set of variables used 
 * @throws IllegalActionException
 */
private static void _generateAllVariableTransitions(FSMActor actor,HashSet<String> variableSet) throws IllegalActionException {
  HashSet<State> stateSet=new HashSet<State>();
  HashMap<String,State> frontier=new HashMap<String,State>();
  _variableTransitionInfo=new HashMap<String,LinkedList<VariableTransitionInfo>>();
  Iterator<String> vit=variableSet.iterator();
  while (vit.hasNext()) {
    String v=vit.next();
    LinkedList<VariableTransitionInfo> l=new LinkedList<VariableTransitionInfo>();
    _variableTransitionInfo.put(v,l);
  }
  LinkedList<VariableTransitionInfo> l=new LinkedList<VariableTransitionInfo>();
  _variableTransitionInfo.put("String_Node_Str",l);
  State stateInThis=actor.getInitialState();
  String name=stateInThis.getName();
  frontier.put(name,stateInThis);
  while (!frontier.isEmpty()) {
    Iterator<String> iterator=frontier.keySet().iterator();
    name=(String)iterator.next();
    stateInThis=(State)frontier.remove(name);
    if (stateInThis == null) {
      throw new IllegalActionException("String_Node_Str" + name + "String_Node_Str");
    }
    ComponentPort outPort=stateInThis.outgoingPort;
    Iterator transitions=outPort.linkedRelationList().iterator();
    while (transitions.hasNext()) {
      StringBuffer signalPremise=new StringBuffer("String_Node_Str");
      Transition transition=(Transition)transitions.next();
      State destinationInThis=transition.destinationState();
      if (!stateSet.contains(destinationInThis)) {
        frontier.put(destinationInThis.getName(),destinationInThis);
        stateSet.add(destinationInThis);
      }
      boolean hasAnnotation=false;
      String text;
      try {
        text=transition.annotation.stringValue();
      }
 catch (      IllegalActionException e) {
        text="String_Node_Str" + e.getMessage();
      }
      if (!text.trim().equals("String_Node_Str")) {
        hasAnnotation=true;
      }
      String guard=transition.getGuardExpression();
      String setAction=transition.setActions.getExpression();
      String outputAction=transition.outputActions.getExpression();
      HashSet<String> variableUsedInTransitionSet=new HashSet<String>();
      if ((guard != null) && !guard.trim().equals("String_Node_Str")) {
        if (hasAnnotation) {
        }
 else {
          String[] guardSplitExpression=guard.split("String_Node_Str");
          if (guardSplitExpression.length != 0) {
            for (int i=0; i < guardSplitExpression.length; i++) {
              String subGuardCondition=guardSplitExpression[i].trim();
              String[] characterOfSubGuard=subGuardCondition.split("String_Node_Str");
              String lValue=characterOfSubGuard[0].trim();
              boolean b=Pattern.matches("String_Node_Str",characterOfSubGuard[0].trim());
              if (b == true) {
                signalPremise.append(characterOfSubGuard[0].trim() + "String_Node_Str");
              }
 else {
                boolean isTrue=false;
                String rValue=null;
                try {
                  rValue=characterOfSubGuard[1].trim();
                }
 catch (                Exception ex) {
                  isTrue=true;
                }
                if (isTrue == false) {
                  variableUsedInTransitionSet.add(lValue);
                }
              }
            }
          }
        }
      }
      if ((setAction != null) && !setAction.trim().equals("String_Node_Str")) {
        String[] setActionSplitExpression=setAction.split("String_Node_Str");
        if (setActionSplitExpression.length != 0) {
          for (int i=0; i < setActionSplitExpression.length; i++) {
            String subSetActionCondition=setActionSplitExpression[i].trim();
            String[] characterOfSubSetAction=subSetActionCondition.split("String_Node_Str");
            String lValue=characterOfSubSetAction[0].trim();
            variableUsedInTransitionSet.add(lValue);
          }
        }
      }
      if ((outputAction != null) && !outputAction.trim().equals("String_Node_Str")) {
        String[] outputActionSplitExpression=outputAction.split("String_Node_Str");
        if (outputActionSplitExpression.length != 0) {
          for (int i=0; i < outputActionSplitExpression.length; i++) {
            String subOutputActionCondition=outputActionSplitExpression[i].trim();
            String[] characterOfSubOutputAction=subOutputActionCondition.split("String_Node_Str");
            String lValue=characterOfSubOutputAction[0].trim();
            variableUsedInTransitionSet.add(lValue + "String_Node_Str");
          }
        }
      }
      HashMap<String,ArrayList<Integer>> valueDomain=new HashMap<String,ArrayList<Integer>>();
      Iterator<String> it=variableUsedInTransitionSet.iterator();
      while (it.hasNext()) {
        String val=(String)it.next();
        boolean b=Pattern.matches("String_Node_Str",val);
        if (b == true) {
          VariableInfo variableInfo=_variableInfo.get(val);
          if (variableInfo == null) {
            throw new IllegalActionException("String_Node_Str" + val + "String_Node_Str");
          }
 else {
            if (variableInfo._minValue != null && variableInfo._maxValue != null) {
              int lowerBound=Integer.parseInt(variableInfo._minValue);
              int upperBound=Integer.parseInt(variableInfo._maxValue);
              ArrayList<Integer> variableDomainForTransition=new ArrayList<Integer>();
              for (int number=lowerBound; number <= upperBound; number++) {
                variableDomainForTransition.add(Integer.valueOf(number));
              }
              valueDomain.put(val,variableDomainForTransition);
            }
          }
        }
 else {
          VariableInfo variableInfo=_variableInfo.get(val);
          if (variableInfo == null) {
            throw new IllegalActionException("String_Node_Str" + val + "String_Node_Str");
          }
 else {
            if (variableInfo._minValue != null && variableInfo._maxValue != null) {
              int lowerBound=Integer.parseInt(variableInfo._minValue);
              int upperBound=Integer.parseInt(variableInfo._maxValue);
              ArrayList<Integer> variableDomainForTransition=new ArrayList<Integer>();
              variableDomainForTransition.add(DOMAIN_LS);
              for (int number=lowerBound; number <= upperBound; number++) {
                variableDomainForTransition.add(Integer.valueOf(number));
              }
              variableDomainForTransition.add(DOMAIN_GT);
              valueDomain.put(val,variableDomainForTransition);
            }
          }
        }
      }
      if ((guard != null) && !guard.trim().equals("String_Node_Str")) {
        if (hasAnnotation) {
        }
 else {
          String[] guardSplitExpression=guard.split("String_Node_Str");
          if (guardSplitExpression.length != 0) {
            for (int i=0; i < guardSplitExpression.length; i++) {
              String subGuardCondition=guardSplitExpression[i].trim();
              String[] characterOfSubGuard=subGuardCondition.split("String_Node_Str");
              String lValue=characterOfSubGuard[0].trim();
              boolean b=Pattern.matches("String_Node_Str",characterOfSubGuard[0].trim());
              if (b == true) {
              }
 else {
                boolean parse=true;
                String rValue=null;
                try {
                  rValue=characterOfSubGuard[1].trim();
                }
 catch (                Exception ex) {
                  parse=false;
                }
                if (parse == true) {
                  if (Pattern.matches("String_Node_Str",rValue) == true) {
                    int numberRetrival=Integer.parseInt(rValue);
                    if (Pattern.matches("String_Node_Str",subGuardCondition)) {
                      ArrayList<Integer> domain=valueDomain.remove(lValue);
                      if (domain == null) {
                        throw new IllegalActionException("String_Node_Str" + lValue + "String_Node_Str");
                      }
 else {
                        for (int j=domain.size() - 1; j >= 0; j--) {
                          if (domain.get(j).intValue() != numberRetrival) {
                            domain.remove(j);
                          }
                        }
                        valueDomain.put(lValue,domain);
                      }
                    }
 else                     if (Pattern.matches("String_Node_Str",subGuardCondition)) {
                      ArrayList<Integer> domain=valueDomain.remove(lValue);
                      if (domain == null) {
                        throw new IllegalActionException("String_Node_Str" + lValue + "String_Node_Str");
                      }
 else {
                        for (int j=domain.size() - 1; j >= 0; j--) {
                          if (domain.get(j).intValue() == numberRetrival) {
                            domain.remove(j);
                          }
                        }
                        valueDomain.put(lValue,domain);
                      }
                    }
 else                     if (Pattern.matches("String_Node_Str",subGuardCondition)) {
                      ArrayList<Integer> domain=valueDomain.remove(lValue);
                      if (domain == null) {
                        throw new IllegalActionException("String_Node_Str" + lValue + "String_Node_Str");
                      }
 else {
                        for (int j=domain.size() - 1; j >= 0; j--) {
                          if (domain.get(j).intValue() > numberRetrival) {
                            domain.remove(j);
                          }
                        }
                        valueDomain.put(lValue,domain);
                      }
                    }
 else                     if (Pattern.matches("String_Node_Str",subGuardCondition)) {
                      ArrayList<Integer> domain=valueDomain.remove(lValue);
                      if (domain == null) {
                        throw new IllegalActionException("String_Node_Str" + lValue + "String_Node_Str");
                      }
 else {
                        for (int j=domain.size() - 1; j >= 0; j--) {
                          if (domain.get(j).intValue() < numberRetrival) {
                            domain.remove(j);
                          }
                        }
                        valueDomain.put(lValue,domain);
                      }
                    }
 else                     if (Pattern.matches("String_Node_Str",subGuardCondition)) {
                      ArrayList<Integer> domain=valueDomain.remove(lValue);
                      if (domain == null) {
                        throw new IllegalActionException("String_Node_Str" + lValue + "String_Node_Str");
                      }
                      for (int j=domain.size() - 1; j >= 0; j--) {
                        if (domain.get(j).intValue() <= numberRetrival) {
                          domain.remove(j);
                        }
                      }
                      valueDomain.put(lValue,domain);
                    }
 else                     if (Pattern.matches("String_Node_Str",subGuardCondition)) {
                      ArrayList<Integer> domain=valueDomain.remove(lValue);
                      if (domain == null) {
                        throw new IllegalActionException("String_Node_Str" + lValue + "String_Node_Str");
                      }
 else {
                        for (int j=domain.size() - 1; j >= 0; j--) {
                          if (domain.get(j).intValue() >= numberRetrival) {
                            domain.remove(j);
                          }
                        }
                        valueDomain.put(lValue,domain);
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
      String setActionExpression=transition.setActions.getExpression();
      if ((setActionExpression != null) && !setActionExpression.trim().equals("String_Node_Str")) {
        String[] splitExpression=setActionExpression.split("String_Node_Str");
        for (int i=0; i < splitExpression.length; i++) {
          String[] characters=splitExpression[i].split("String_Node_Str");
          if (characters.length >= 1) {
            String lValue=characters[0].trim();
            String rValue=characters[1].trim();
            if (Pattern.matches("String_Node_Str",characters[1].trim()) == true) {
              String statePrecondition="String_Node_Str" + stateInThis.getDisplayName();
              _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,lValue,rValue,"String_Node_Str");
              _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,"String_Node_Str",destinationInThis.getDisplayName(),"String_Node_Str");
            }
 else {
              if (Pattern.matches("String_Node_Str",rValue)) {
                String[] rValueOperends=rValue.split("String_Node_Str");
                String offset=rValueOperends[1].trim();
                try {
                  int value=Integer.parseInt(rValueOperends[1].trim());
                }
 catch (                Exception ex) {
                  if (rValueOperends[1].trim().endsWith("String_Node_Str") && rValueOperends[1].trim().startsWith("String_Node_Str")) {
                    offset=rValueOperends[1].trim().substring(1,rValueOperends[1].trim().length() - 1);
                    try {
                      Integer.parseInt(offset);
                    }
 catch (                    Exception exInner) {
                      throw new IllegalActionException("String_Node_Str" + exInner.getMessage());
                    }
                  }
                }
                String statePrecondition="String_Node_Str" + stateInThis.getDisplayName();
                _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,lValue,offset,"String_Node_Str");
                _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,"String_Node_Str",destinationInThis.getDisplayName(),"String_Node_Str");
              }
 else               if (Pattern.matches("String_Node_Str",rValue)) {
                String[] rValueOperends=rValue.split("String_Node_Str");
                String offset=rValueOperends[1].trim();
                try {
                  int value=Integer.parseInt(rValueOperends[1].trim());
                }
 catch (                Exception ex) {
                  if (rValueOperends[1].trim().endsWith("String_Node_Str") && rValueOperends[1].trim().startsWith("String_Node_Str")) {
                    offset=rValueOperends[1].trim().substring(1,rValueOperends[1].trim().length() - 1);
                    try {
                      Integer.parseInt(offset);
                    }
 catch (                    Exception exInner) {
                      throw new IllegalActionException("String_Node_Str" + exInner.getMessage());
                    }
                  }
                }
                String statePrecondition="String_Node_Str" + stateInThis.getDisplayName();
                _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,lValue,offset,"String_Node_Str");
                _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,"String_Node_Str",destinationInThis.getDisplayName(),"String_Node_Str");
              }
 else               if (Pattern.matches("String_Node_Str",rValue)) {
                String[] rValueOperends=rValue.split("String_Node_Str");
                String offset=rValueOperends[1].trim();
                try {
                  int value=Integer.parseInt(rValueOperends[1].trim());
                }
 catch (                Exception ex) {
                  if (rValueOperends[1].trim().endsWith("String_Node_Str") && rValueOperends[1].trim().startsWith("String_Node_Str")) {
                    offset=rValueOperends[1].trim().substring(1,rValueOperends[1].trim().length() - 1);
                    try {
                      Integer.parseInt(offset);
                    }
 catch (                    Exception exInner) {
                      throw new IllegalActionException("String_Node_Str" + "String_Node_Str");
                    }
                  }
                }
                String statePrecondition="String_Node_Str" + stateInThis.getDisplayName();
                _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,lValue,rValueOperends[1].trim(),"String_Node_Str");
                _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,"String_Node_Str",destinationInThis.getDisplayName(),"String_Node_Str");
              }
 else               if (Pattern.matches("String_Node_Str",rValue)) {
                String[] rValueOperends=rValue.split("String_Node_Str");
                String offset=rValueOperends[1].trim();
                try {
                  int value=Integer.parseInt(rValueOperends[1].trim());
                }
 catch (                Exception ex) {
                  if (rValueOperends[1].trim().endsWith("String_Node_Str") && rValueOperends[1].trim().startsWith("String_Node_Str")) {
                    offset=rValueOperends[1].trim().substring(1,rValueOperends[1].trim().length() - 1);
                    try {
                      Integer.parseInt(offset);
                    }
 catch (                    Exception exInner) {
                    }
                  }
                }
                String statePrecondition="String_Node_Str" + stateInThis.getDisplayName();
                _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,lValue,rValueOperends[1].trim(),"String_Node_Str");
                _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,"String_Node_Str",destinationInThis.getDisplayName(),"String_Node_Str");
              }
            }
          }
        }
      }
 else {
        String statePrecondition="String_Node_Str" + stateInThis.getDisplayName();
        _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,"String_Node_Str",destinationInThis.getDisplayName(),"String_Node_Str");
      }
      String outputActionExpression=transition.outputActions.getExpression();
      if ((outputActionExpression != null) && !outputActionExpression.trim().equals("String_Node_Str")) {
        String[] splitExpression=outputActionExpression.split("String_Node_Str");
        for (int i=0; i < splitExpression.length; i++) {
          String[] characters=splitExpression[i].split("String_Node_Str");
          String lValue=characters[0].trim();
          String statePrecondition="String_Node_Str" + stateInThis.getDisplayName();
          _generatePremiseAndResultEachTransition(signalPremise.toString() + statePrecondition,valueDomain,lValue + "String_Node_Str","String_Node_Str","String_Node_Str");
        }
      }
    }
  }
}