001: package net.sf.jdec.jvminstructions.commands;
002:
003: import net.sf.jdec.blockhelpers.BranchHelper;
004: import net.sf.jdec.blockhelpers.IFHelper;
005: import net.sf.jdec.blockhelpers.LoopHelper;
006: import net.sf.jdec.blocks.IFBlock;
007: import net.sf.jdec.blocks.Loop;
008: import net.sf.jdec.core.*;
009: import net.sf.jdec.reflection.Behaviour;
010: import net.sf.jdec.util.Util;
011:
012: import java.util.ArrayList;
013: import java.util.Iterator;
014:
015: public class IFNECommand extends AbstractInstructionCommand {
016:
017: public IFNECommand(Behaviour context) {
018: super (context);
019:
020: }
021:
022: public int getSkipBytes() {
023: return 2;
024: }
025:
026: public void execute() {
027: int currentForIndex = getCurrentInstPosInCode();
028: String tempstr = "";
029: String tempString = "";
030: Behaviour behavior = getContext();
031: Loop this Loop;
032: boolean encounteredAndOrComp = GlobalVariableStore
033: .isEncounteredAndOrComp();
034: boolean isIfInScope = GlobalVariableStore.isIfInScope();
035: OperandStack opStack = getStack();
036: byte[] info = getCode();
037: int i = currentForIndex;
038: java.lang.String previnstret = DecompilerHelper
039: .getReturnTypeIfPreviousInvoke(currentForIndex, info);
040: Operand op = (Operand) opStack.pop();
041: int classIndex = getGenericFinder().getJumpAddress(i);
042: i += 2;
043:
044: ArrayList list = getContext().getBehaviourLoops();
045:
046: IFBlock ifst = new IFBlock();
047: ifst.setIfStart(currentForIndex);
048: ifst.setHasIfBeenGenerated(true);
049: // ifst.setIfCloseLineNumber(classIndex-3);
050: boolean addBreak = LoopHelper.checkForParentLoopForIF(ifst);
051: getContext().getMethodIfs().add(ifst);
052:
053: BranchHelper.addBranchLabel(classIndex, i, ifst,
054: currentForIndex, info);
055: boolean beyondLoop = LoopHelper.isBeyondLoop(ifst
056: .getIfCloseLineNumber(), list, info);
057: this Loop = GlobalVariableStore.getThisLoop();
058: boolean isEndOfLoop = LoopHelper.isIndexEndOfLoop(list, ifst
059: .getIfCloseLineNumber());
060: this Loop = GlobalVariableStore.getThisLoop();
061: boolean correctIf = false;
062: int prevStart = getGenericFinder().getPrevStartOfInst(
063: currentForIndex);
064: java.lang.String t3 = op.getClassType();
065: java.lang.String t4 = op.getLocalVarType();
066: if ((t3 != null && t3.trim().equals("boolean"))
067: || (t4 != null && t4.trim().equals("boolean"))) {
068: if (previnstret != null && previnstret.trim().equals("1")) {
069: previnstret = "true";
070: }
071: if (previnstret != null && previnstret.trim().equals("0")) {
072: previnstret = "false";
073: }
074: }
075: if ((getGenericFinder().isThisInstrStart(currentForIndex - 1)
076: && (info[currentForIndex - 1] != JvmOpCodes.DCMPG)
077: && (info[currentForIndex - 1] != JvmOpCodes.DCMPL)
078: && info[currentForIndex - 1] != JvmOpCodes.FCMPG
079: && info[currentForIndex - 1] != JvmOpCodes.FCMPL && info[currentForIndex - 1] != JvmOpCodes.LCMP)) {
080:
081: tempstr = op.getOperandValue() + "==" + previnstret;
082: } else if (getGenericFinder().isThisInstrStart(
083: currentForIndex - 3)
084: && info[currentForIndex - 3] != JvmOpCodes.INSTANCEOF) {
085:
086: tempstr = op.getOperandValue() + "==" + previnstret;
087: } else if (prevStart != currentForIndex - 1
088: && prevStart != currentForIndex - 3) {
089: tempstr = op.getOperandValue() + "==" + previnstret;
090: } else {
091:
092: tempstr = op.getOperandValue();// //
093: }
094: boolean processIF = true;// checkForTernaryIf(ifst,info,tempstr);
095: if (processIF) {
096: if (ifst.getDonotclose() == false
097: && ifst.getIfCloseLineNumber() == -1) {
098: int if_end = IFHelper.checkIFEndIfUnset(ifst, info,
099: currentForIndex);
100: ifst.setIfCloseLineNumber(if_end);
101: }
102: if (isEndOfLoop) {
103: int loopstart = LoopHelper.getLoopStartForEnd(ifst
104: .getIfCloseLineNumber(), list);
105: if (currentForIndex > loopstart) {
106: boolean ifinstcodepresent = IFHelper.getIfinst(
107: loopstart, info, currentForIndex);
108: if (ifinstcodepresent) {
109: correctIf = false;
110: } else
111: correctIf = true;
112: }
113: }
114: if (ifst.getIfCloseLineNumber() >= 0
115: && ifst.getIfCloseLineNumber() < info.length
116: && info[ifst.getIfCloseLineNumber()] == JvmOpCodes.GOTO
117: && isEndOfLoop && correctIf) {
118: int t = ifst.getIfCloseLineNumber();
119: int gotoIndex = getGenericFinder().getJumpAddress(t);// ((info[t+1]
120: // << 8)
121: // |
122: // info[t+2])
123: // +
124: // (ifst.getIfCloseLineNumber());
125: if (gotoIndex < (t + 3))
126: if (gotoIndex < classIndex) {
127: boolean isInfiniteLoop = false;
128: Iterator infLoop = getContext()
129: .getBehaviourLoops().iterator();
130: while (infLoop.hasNext()) {
131: Loop iloop = (Loop) infLoop.next();
132: if (iloop.getStartIndex() == gotoIndex
133: && iloop.isInfinite()) {
134: isInfiniteLoop = true;
135: /*
136: * ifLevel++; ifst = new IFBlock();
137: * ifst.setIfStart(currentForIndex);
138: * ifst.setHasIfBeenGenerated(true);
139: * //ifst.setIfCloseLineNumber(classIndex-3);
140: */
141: ifst.setElseCloseLineNumber(gotoIndex);
142: // ifHashTable.put(""+(ifLevel),ifst);
143: isIfInScope = true;
144: // addBranchLabel(classIndex,i,ifst,currentForIndex,info);
145: boolean bb = LoopHelper
146: .isBeyondLoop(
147: getGenericFinder()
148: .getJumpAddress(
149: currentForIndex),
150: getContext()
151: .getBehaviourLoops(),
152: info);
153: this Loop = GlobalVariableStore
154: .getThisLoop();
155: boolean print = true;
156: boolean addifbreak = false;
157: java.lang.String tempString2 = "";
158: prevStart = getGenericFinder()
159: .getPrevStartOfInst(
160: currentForIndex);
161: if (bb && this Loop != null
162: && this Loop.isInfinite()
163: && !encounteredAndOrComp
164: && addBreak) {
165: Loop dowl = LoopHelper
166: .isIfInADoWhile(
167: currentForIndex,
168: ifst,
169: getContext()
170: .getBehaviourLoops());
171: if (dowl != null) {
172: tempString = "";
173: } else {
174: addifbreak = true;
175: if (getGenericFinder()
176: .isThisInstrStart(
177: currentForIndex - 1)
178: && (info[currentForIndex - 1] != JvmOpCodes.DCMPG)
179: && (info[currentForIndex - 1] != JvmOpCodes.DCMPL)
180: && info[currentForIndex - 1] != JvmOpCodes.FCMPG
181: && info[currentForIndex - 1] != JvmOpCodes.FCMPL
182: && info[currentForIndex - 1] != JvmOpCodes.LCMP)
183: tempString = "\nif("
184: + op
185: .getOperandValue()
186: + "!="
187: + previnstret
188: + ")\n{\nbreak;\n}\n";
189: else if (getGenericFinder()
190: .isThisInstrStart(
191: currentForIndex - 3)
192: && info[currentForIndex - 3] != JvmOpCodes.INSTANCEOF
193: && getGenericFinder()
194: .isPreviousInst(
195: currentForIndex,
196: currentForIndex - 3))
197: tempString = "\nif("
198: + op
199: .getOperandValue()
200: + "!="
201: + previnstret
202: + ")\n{\nbreak;\n}\n";
203: else if (prevStart != currentForIndex - 1
204: && prevStart != currentForIndex - 3) {
205: tempString = "\nif("
206: + op
207: .getOperandValue()
208: + "!="
209: + previnstret
210: + ")\n{\nbreak;\n}\n";
211: } else
212: tempString = "\nif("
213: + op
214: .getOperandValue()
215: + ")\n{\nbreak;\n}\n";
216: // codeStatements
217: // +=Util.formatDecompiledStatement(tempString);
218: tempString2 = tempString;
219: }
220: print = false;
221: // ifst.setIfHasBeenClosed(true);
222: }
223: tempstr = "";
224: boolean last = IFHelper
225: .lastIFinShortCutChain(info,
226: ifst, currentForIndex);
227: boolean bc = false;
228: if (getGenericFinder()
229: .isThisInstrStart(
230: currentForIndex - 1)
231: && (info[currentForIndex - 1] != JvmOpCodes.DCMPG)
232: && (info[currentForIndex - 1] != JvmOpCodes.DCMPL)
233: && info[currentForIndex - 1] != JvmOpCodes.FCMPG
234: && info[currentForIndex - 1] != JvmOpCodes.FCMPL
235: && info[currentForIndex - 1] != JvmOpCodes.LCMP) {
236: tempString = "\nif("
237: + op.getOperandValue()
238: + "==" + previnstret
239: + ")\n{\n";
240: tempstr = op.getOperandValue()
241: + "!=" + previnstret;
242: } else if (getGenericFinder()
243: .isThisInstrStart(
244: currentForIndex - 3)
245: && info[currentForIndex - 3] != JvmOpCodes.INSTANCEOF
246: && getGenericFinder()
247: .isPreviousInst(
248: currentForIndex,
249: currentForIndex - 3)) {
250: tempString = "\nif("
251: + op.getOperandValue()
252: + "==" + previnstret
253: + ")\n{\n";
254: tempstr = op.getOperandValue()
255: + "!=" + previnstret;
256: } else if (prevStart != currentForIndex - 1
257: && prevStart != currentForIndex - 3) {
258: tempString = "\nif("
259: + op.getOperandValue()
260: + "==" + previnstret
261: + ")\n{\n";
262: tempstr = op.getOperandValue()
263: + "!=" + previnstret;
264: } else {
265: tempString = "\nif("
266: + op.getOperandValue()
267: + ")\n{\n";
268: tempstr = op.getOperandValue();
269: bc = true;
270: }
271: java.lang.String alt;
272: if (bc == false)
273: alt = op.getOperandValue() + "=="
274: + previnstret;
275: else
276: alt = op.getOperandValue();
277: boolean c = IFHelper
278: .addCodeStatementWRTShortcutOR(
279: ifst, tempstr, print,
280: "if", last, alt);
281: if (c) {
282: if (addifbreak) {
283: behavior
284: .appendToBuffer(Util
285: .formatDecompiledStatement(tempString2));
286: }
287:
288: behavior
289: .appendToBuffer(Util
290: .formatDecompiledStatement(tempString));
291: } else {
292: boolean firstIfForLoop = LoopHelper
293: .isIfFirstIfInLoopCondition(
294: info,
295: currentForIndex);
296: if (firstIfForLoop) {
297: IFHelper
298: .registerElseBreakForIfChain(currentForIndex);
299: }
300: }
301:
302: break;
303: }
304: }
305: if (isInfiniteLoop) {
306: GlobalVariableStore
307: .setEncounteredAndOrComp(encounteredAndOrComp);
308: GlobalVariableStore
309: .setIfInScope(isIfInScope);
310: GlobalVariableStore.setThisLoop(this Loop);
311:
312: return;
313: }
314: tempstr = "";
315: prevStart = getGenericFinder()
316: .getPrevStartOfInst(currentForIndex);
317: boolean bc = false;
318: if (getGenericFinder().isThisInstrStart(
319: currentForIndex - 1)
320: && info[currentForIndex - 1] != JvmOpCodes.DCMPG
321: && info[currentForIndex - 1] != JvmOpCodes.DCMPL
322: && info[currentForIndex - 1] != JvmOpCodes.FCMPG
323: && info[currentForIndex - 1] != JvmOpCodes.FCMPL
324: && info[currentForIndex - 1] != JvmOpCodes.LCMP) {
325: tempString = "\nwhile("
326: + op.getOperandValue() + "=="
327: + previnstret + ")\n{\n";
328: tempstr = op.getOperandValue() + "!="
329: + previnstret;
330: } else if (getGenericFinder().isThisInstrStart(
331: currentForIndex - 3)
332: && info[currentForIndex - 3] != JvmOpCodes.INSTANCEOF
333: && getGenericFinder().isPreviousInst(
334: currentForIndex,
335: currentForIndex - 3)) {
336: tempString = "\nwhile("
337: + op.getOperandValue() + "=="
338: + previnstret + ")\n{\n";
339: tempstr = op.getOperandValue() + "!="
340: + previnstret;
341: } else if (prevStart != currentForIndex - 1
342: && prevStart != currentForIndex - 3) {
343: tempString = "\nwhile("
344: + op.getOperandValue() + "=="
345: + previnstret + ")\n{\n";
346: tempstr = op.getOperandValue() + "!="
347: + previnstret;
348: } else {
349: tempString = "\nwhile("
350: + op.getOperandValue() + ")\n{\n";
351: tempstr = op.getOperandValue();
352: bc = true;
353: }
354: boolean last = IFHelper.lastIFinShortCutChain(
355: info, ifst, currentForIndex);
356: java.lang.String alt;
357: if (bc == false) {
358: alt = op.getOperandValue() + "=="
359: + previnstret;
360: } else {
361: alt = op.getOperandValue();
362: }
363:
364: boolean c = IFHelper
365: .addCodeStatementWRTShortcutOR(ifst,
366: tempstr, true, "while", last,
367: alt);
368: if (c)
369: behavior
370: .appendToBuffer(Util
371: .formatDecompiledStatement(tempString));
372:
373: } else {
374: /*
375: * ifLevel++; ifst = new IFBlock();
376: * ifst.setIfStart(currentForIndex);
377: * ifst.setHasIfBeenGenerated(true);
378: * //ifst.setIfCloseLineNumber(classIndex-3);
379: */
380: ifst.setElseCloseLineNumber(gotoIndex);
381: // ifHashTable.put(""+(ifLevel),ifst);
382: isIfInScope = true;
383: // addBranchLabel(classIndex,i,ifst,currentForIndex,info);
384: boolean bb = LoopHelper.isBeyondLoop(
385: getGenericFinder().getJumpAddress(
386: currentForIndex), getContext()
387: .getBehaviourLoops(), info);
388: this Loop = GlobalVariableStore.getThisLoop();
389: boolean print = true;
390: boolean addifbreak = false;
391: java.lang.String tempString2 = "";
392: prevStart = getGenericFinder()
393: .getPrevStartOfInst(currentForIndex);
394: if (bb && this Loop != null
395: && this Loop.isInfinite()
396: && !encounteredAndOrComp && addBreak) {
397: Loop dowl = LoopHelper.isIfInADoWhile(
398: currentForIndex, ifst, getContext()
399: .getBehaviourLoops());
400: if (dowl != null) {
401: tempString = "";
402: } else {
403: if (getGenericFinder()
404: .isThisInstrStart(
405: currentForIndex - 1)
406: && (info[currentForIndex - 1] != JvmOpCodes.DCMPG)
407: && (info[currentForIndex - 1] != JvmOpCodes.DCMPL)
408: && info[currentForIndex - 1] != JvmOpCodes.FCMPG
409: && info[currentForIndex - 1] != JvmOpCodes.FCMPL
410: && info[currentForIndex - 1] != JvmOpCodes.LCMP)
411: tempString = "\nif("
412: + op.getOperandValue()
413: + "!=" + previnstret
414: + ")\n{\nbreak;\n}\n";
415: else if (getGenericFinder()
416: .isThisInstrStart(
417: currentForIndex - 3)
418: && info[currentForIndex - 3] != JvmOpCodes.INSTANCEOF
419: && getGenericFinder()
420: .isPreviousInst(
421: currentForIndex,
422: currentForIndex - 3))
423: tempString = "\nif("
424: + op.getOperandValue()
425: + "!=" + previnstret
426: + ")\n{\nbreak;\n}\n";
427: else if (prevStart != currentForIndex - 1
428: && prevStart != currentForIndex - 3) {
429: tempString = "\nif("
430: + op.getOperandValue()
431: + "!=" + previnstret
432: + ")\n{\nbreak;\n}\n";
433: } else
434: tempString = "\nif("
435: + op.getOperandValue()
436: + ")\n{\nbreak;\n}\n";
437: // codeStatements
438: // +=Util.formatDecompiledStatement(tempString);
439: tempString2 = tempString;
440: }
441: print = false;
442: // ifst.setIfHasBeenClosed(true);
443: }
444: tempstr = "";
445: boolean bc = false;
446: if (getGenericFinder().isThisInstrStart(
447: currentForIndex - 1)
448: && info[currentForIndex - 1] != JvmOpCodes.DCMPG
449: && info[currentForIndex - 1] != JvmOpCodes.DCMPL
450: && info[currentForIndex - 1] != JvmOpCodes.FCMPG
451: && info[currentForIndex - 1] != JvmOpCodes.FCMPL
452: && info[currentForIndex - 1] != JvmOpCodes.LCMP) {
453: tempString = "\nif(" + op.getOperandValue()
454: + "==" + previnstret + ")\n{\n";
455: tempstr = op.getOperandValue() + "!="
456: + previnstret;
457: } else if (getGenericFinder().isThisInstrStart(
458: currentForIndex - 3)
459: && info[currentForIndex - 3] != JvmOpCodes.INSTANCEOF
460: && getGenericFinder().isPreviousInst(
461: currentForIndex,
462: currentForIndex - 3)) {
463: tempString = "\nif(" + op.getOperandValue()
464: + "==" + previnstret + ")\n{\n";
465: tempstr = op.getOperandValue() + "!="
466: + previnstret;
467: } else if (prevStart != currentForIndex - 1
468: && prevStart != currentForIndex - 3) {
469: tempString = "\nif(" + op.getOperandValue()
470: + "==" + previnstret + ")\n{\n";
471: tempstr = op.getOperandValue() + "!="
472: + previnstret;
473: } else {
474: tempString = "\nif(" + op.getOperandValue()
475: + ")\n{\n";
476: tempstr = op.getOperandValue();
477: bc = true;
478: }
479: java.lang.String alt;
480: if (bc == false) {
481: alt = op.getOperandValue() + "=="
482: + previnstret;
483: } else {
484: alt = op.getOperandValue();
485: }
486: boolean last = IFHelper.lastIFinShortCutChain(
487: info, ifst, currentForIndex);
488: boolean c = IFHelper
489: .addCodeStatementWRTShortcutOR(ifst,
490: tempstr, print, "if", last, alt);
491: if (c) {
492: if (addifbreak) {
493: behavior
494: .appendToBuffer(Util
495: .formatDecompiledStatement(tempString2));
496: }
497: behavior
498: .appendToBuffer(Util
499: .formatDecompiledStatement(tempString));
500: } else {
501: boolean firstIfForLoop = LoopHelper
502: .isIfFirstIfInLoopCondition(info,
503: currentForIndex);
504: if (firstIfForLoop) {
505: IFHelper
506: .registerElseBreakForIfChain(currentForIndex);
507: }
508: }
509:
510: }
511:
512: } else {
513: /*
514: * ifLevel++; ifst = new IFBlock();
515: * ifst.setIfStart(currentForIndex);
516: * ifst.setHasIfBeenGenerated(true);
517: * ifHashTable.put(""+(ifLevel),ifst); isIfInScope=true;
518: * addBranchLabel(classIndex,i,ifst,currentForIndex,info);
519: */
520: isIfInScope = true;
521: boolean bb = LoopHelper.isBeyondLoop(getGenericFinder()
522: .getJumpAddress(currentForIndex), getContext()
523: .getBehaviourLoops(), info);
524: this Loop = GlobalVariableStore.getThisLoop();
525: boolean print = true;
526: boolean addifbreak = false;
527: java.lang.String tempString2 = "";
528: prevStart = getGenericFinder().getPrevStartOfInst(
529: currentForIndex);
530: if (bb && this Loop != null && this Loop.isInfinite()
531: && !encounteredAndOrComp && addBreak) {
532: Loop dowl = LoopHelper.isIfInADoWhile(
533: currentForIndex, ifst, getContext()
534: .getBehaviourLoops());
535: if (dowl != null) {
536: tempString = "";
537: } else {
538: if (getGenericFinder().isThisInstrStart(
539: currentForIndex - 1)
540: && (info[currentForIndex - 1] != JvmOpCodes.DCMPG)
541: && (info[currentForIndex - 1] != JvmOpCodes.DCMPL)
542: && info[currentForIndex - 1] != JvmOpCodes.FCMPG
543: && info[currentForIndex - 1] != JvmOpCodes.FCMPL
544: && info[currentForIndex - 1] != JvmOpCodes.LCMP)
545: tempString = "\nif(" + op.getOperandValue()
546: + "!=" + previnstret
547: + ")\n{\nbreak;\n}\n";
548: else if (getGenericFinder().isThisInstrStart(
549: currentForIndex - 3)
550: && info[currentForIndex - 3] != JvmOpCodes.INSTANCEOF
551: && getGenericFinder().isPreviousInst(
552: currentForIndex,
553: currentForIndex - 3))
554: tempString = "\nif(" + op.getOperandValue()
555: + "!=" + previnstret
556: + ")\n{\nbreak;\n}\n";
557: else if (prevStart != currentForIndex - 1
558: && prevStart != currentForIndex - 3) {
559: tempString = "\nif(" + op.getOperandValue()
560: + "!=" + previnstret
561: + ")\n{\nbreak;\n}\n";
562: } else
563: tempString = "\nif(" + op.getOperandValue()
564: + ")\n{\nbreak;\n}\n";
565: // codeStatements
566: // +=Util.formatDecompiledStatement(tempString);
567: addifbreak = true;
568: tempString2 = tempString;
569: }
570: print = false;
571: // ifst.setIfHasBeenClosed(true);
572: }
573: boolean last = IFHelper.lastIFinShortCutChain(info,
574: ifst, currentForIndex);
575: tempstr = "";
576: boolean bc = false;
577: if (getGenericFinder().isThisInstrStart(
578: currentForIndex - 1)
579: && info[currentForIndex - 1] != JvmOpCodes.DCMPG
580: && info[currentForIndex - 1] != JvmOpCodes.DCMPL
581: && info[currentForIndex - 1] != JvmOpCodes.FCMPG
582: && info[currentForIndex - 1] != JvmOpCodes.FCMPL
583: && info[currentForIndex - 1] != JvmOpCodes.LCMP) {
584: tempString = "\nif(" + op.getOperandValue() + "=="
585: + previnstret + ")\n{\n";
586: tempstr = op.getOperandValue() + "!=" + previnstret;
587: } else if (getGenericFinder().isThisInstrStart(
588: currentForIndex - 3)
589: && info[currentForIndex - 3] != JvmOpCodes.INSTANCEOF
590: && getGenericFinder().isPreviousInst(
591: currentForIndex, currentForIndex - 3)) {
592: tempString = "\nif(" + op.getOperandValue() + "=="
593: + previnstret + ")\n{\n";
594: tempstr = op.getOperandValue() + "!=" + previnstret;
595: } else if (prevStart != currentForIndex - 1
596: && prevStart != currentForIndex - 3) {
597: tempString = "\nif(" + op.getOperandValue() + "=="
598: + previnstret + ")\n{\n";
599: tempstr = op.getOperandValue() + "!=" + previnstret;
600: } else {
601: tempString = "\nif(" + op.getOperandValue()
602: + ")\n{\n";
603: tempstr = op.getOperandValue();
604: bc = true;
605: }
606: java.lang.String alt;
607: if (bc == false) {
608: alt = op.getOperandValue() + "==" + previnstret;
609: } else {
610: alt = op.getOperandValue();
611: }
612: boolean c = IFHelper.addCodeStatementWRTShortcutOR(
613: ifst, tempstr, print, "if", last, alt);
614: if (c) {
615: if (addifbreak) {
616: behavior
617: .appendToBuffer(Util
618: .formatDecompiledStatement(tempString2));
619: }
620:
621: behavior.appendToBuffer(Util
622: .formatDecompiledStatement(tempString));
623: } else {
624: boolean firstIfForLoop = LoopHelper
625: .isIfFirstIfInLoopCondition(info,
626: currentForIndex);
627: if (firstIfForLoop) {
628: IFHelper
629: .registerElseBreakForIfChain(currentForIndex);
630: }
631: }
632:
633: }
634: }
635: GlobalVariableStore
636: .setEncounteredAndOrComp(encounteredAndOrComp);
637: GlobalVariableStore.setIfInScope(isIfInScope);
638: GlobalVariableStore.setThisLoop(thisLoop);
639:
640: }
641:
642: }
|