public Set<DefUseCoverageTestFitness> determineDefUsePairs(){
  Set<DefUseCoverageTestFitness> r=preAnalyzeMethods();
  for (  CCFGMethodEntryNode publicMethodEntry : ccfg.publicMethods) {
    if (analyzedMethods.contains(publicMethodEntry)) {
      continue;
    }
    if (publicMethodEntry.getEntryInstruction() == null)     throw new IllegalStateException("expect each CCFGMethodEntryNode to have its entryInstruction set");
    r.addAll(determineIntraInterMethodPairs(publicMethodEntry));
  }
  r.addAll(createIntraClassPairs());
  freeMemory();
  return r;
}

public Set < DefUseCoverageTestFitness > determineDefUsePairs ( ) { Set < DefUseCoverageTestFitness > r = preAnalyzeMethods ( ) ; for ( CCFGMethodEntryNode publicMethodEntry : ccfg . publicMethods ) { if ( analyzedMethods . contains ( publicMethodEntry ) ) { continue ; } if ( publicMethodEntry . getEntryInstruction ( ) == null ) throw new IllegalStateException ( "expect each CCFGMethodEntryNode to have its entryInstruction set" ) ; r . addAll ( determineIntraInterMethodPairs ( publicMethodEntry ) ) ; } r . addAll ( createIntraClassPairs ( ) ) ; freeMemory ( ) ; return r ; }
makes a run of determineintermethodpairs ( ) for each public method . if you reach a use for which you have no def yet , remember that also remember activedefs after each run then create intra - class pairs from these uses and defs and during each single run we detect intra and inter method pairs
