def lopUselessLeaves(cls, pn):
     """ generated source for method lopUselessLeaves """
     usefulComponents = HashSet()
     toAdd = Stack()
     toAdd.add(pn.getTerminalProposition())
     usefulComponents.add(pn.getInitProposition())
     for goalProps in pn.getGoalPropositions().values():
         toAdd.addAll(goalProps)
     for legalProps in pn.getLegalPropositions().values():
         toAdd.addAll(legalProps)
     while not toAdd.isEmpty():
         if usefulComponents.contains(curComp):
             continue 
         usefulComponents.add(curComp)
         toAdd.addAll(curComp.getInputs())
     allComponents = ArrayList(pn.getComponents())
     for c in allComponents:
         if not usefulComponents.contains(c):
             pn.removeComponent(c)