void (CallInstruction instruction, int offset, int nextOffset) { int newOffset = instruction.offset; // 'procedure' pointed by call instruction should be processed regardless of whether it was already visited or not // clear procedure text and return instructions afterwards int i; for (i = instruction.procBegin; i < clientVisitor.processedInstructions.length && (i < instruction.procEnd || i < instructions.size() && instructions.get(i) instanceof ReturnInstruction); i++) { clientVisitor.processedInstructions[i] = false; } clientVisitor.procedureEntered(instruction.procBegin, i); walkThroughStack.currentStack = new CallStackItem(walkThroughStack.currentStack, offset + 1); walkThroughStack.push(offset, newOffset); walkThroughStack.push(newOffset); }