code: public void buildBranchGraphs(Map<Integer, Instruction> pcMap) {
        for (Instruction instruction = pcHead; instruction != null; instruction = instruction.getNextPC()) {
           if (instruction.isBranch()) {
              final Branch branch = instruction.asBranch();
              final Instruction targetInstruction = pcMap.get(branch.getAbsolute());
              branch.setTarget(targetInstruction);
           }
        }
     }
docs: Here we connect the branch nodes to the instruction that they branch to.
  <p>
  Each branch node contains a 'target' field indended to reference the node that the branch targets. Each instruction also contain four seperate lists of branch nodes that reference it.
  These lists hold forwardConditional, forwardUnconditional, reverseConditional and revereseUnconditional branches that reference it.
  <p>
  So assuming that we had a branch node at pc offset 100 which represented 'goto 200'.
  <p>
  Following this call the branch node at pc offset 100 will have a 'target' field which actually references the instruction at pc offset 200, and the instruction at pc offset 200 will
  have the branch node (at 100) added to it's forwardUnconditional list.
  
  @see InstructionSet.Branch#getTarget()