List<Instruction> () { if (myInstructions == null) { final List<Instruction> list = new ArrayList<>(myEnd - myStart); final List<Instruction> oldList = myControlFlow.getInstructions(); for (int i = myStart; i < myEnd; i++) { Instruction instruction = oldList.get(i).clone(); if (instruction instanceof BranchingInstruction) { BranchingInstruction branchingInstruction = (BranchingInstruction)instruction; branchingInstruction.offset = patchOffset(branchingInstruction.offset); } if (instruction instanceof CallInstruction) { final CallInstruction callInstruction = (CallInstruction)instruction; callInstruction.procBegin = patchOffset(callInstruction.procBegin); callInstruction.procEnd = patchOffset(callInstruction.procEnd); } if (instruction instanceof ReturnInstruction) { final ReturnInstruction returnInstruction = (ReturnInstruction)instruction; CallInstruction callInstruction = new CallInstruction(patchOffset(returnInstruction.getProcBegin()), patchOffset(returnInstruction.getProcEnd())); returnInstruction.setCallInstruction(callInstruction); } list.add(instruction); } myInstructions = list; } return myInstructions; }