public boolean isClassSubclassOfIncluding(SootClass child,SootClass possibleParent){
  child.checkLevel(SootClass.HIERARCHY);
  possibleParent.checkLevel(SootClass.HIERARCHY);
  List<SootClass> parentClasses=getSuperclassesOfIncluding(child);
  if (parentClasses.contains(possibleParent))   return true;
  for (  SootClass sc : parentClasses)   if (sc.isPhantom())   return true;
  return false;
}

public boolean isClassSubclassOfIncluding ( SootClass child , SootClass possibleParent ) { child . checkLevel ( SootClass . HIERARCHY ) ; possibleParent . checkLevel ( SootClass . HIERARCHY ) ; List < SootClass > parentClasses = getSuperclassesOfIncluding ( child ) ; if ( parentClasses . contains ( possibleParent ) ) return true ; for ( SootClass sc : parentClasses ) if ( sc . isPhantom ( ) ) return true ; return false ; }
returns true if child is , or is a subclass of , possibleparent . if one of the known parent classes is phantom , we conservatively assume that the current class might be a child .
