in src/main/java/org/apache/bcel/util/BCELFactory.java [212:253]
public void visitBranchInstruction(final BranchInstruction bi) {
final BranchHandle bh = (BranchHandle) branchMap.get(bi);
final int pos = bh.getPosition();
final String name = bi.getName() + "_" + pos;
if (bi instanceof Select) {
final Select s = (Select) bi;
branches.add(bi);
final StringBuilder args = new StringBuilder("new int[] { ");
final int[] matchs = s.getMatchs();
for (int i = 0; i < matchs.length; i++) {
args.append(matchs[i]);
if (i < matchs.length - 1) {
args.append(", ");
}
}
args.append(" }");
printWriter.print("Select " + name + " = new " + bi.getName().toUpperCase(Locale.ENGLISH) + "(" + args + ", new InstructionHandle[] { ");
for (int i = 0; i < matchs.length; i++) {
printWriter.print("null");
if (i < matchs.length - 1) {
printWriter.print(", ");
}
}
printWriter.println(" }, null);");
} else {
final int tPos = bh.getTarget().getPosition();
String target;
if (pos > tPos) {
target = "ih_" + tPos;
} else {
branches.add(bi);
target = "null";
}
printWriter.println(" BranchInstruction " + name + " = _factory.createBranchInstruction(" + CONSTANT_PREFIX
+ bi.getName().toUpperCase(Locale.ENGLISH) + ", " + target + ");");
}
if (bh.hasTargeters()) {
printWriter.println(" ih_" + pos + " = il.append(" + name + ");");
} else {
printWriter.println(" il.append(" + name + ");");
}
}