return tbl_processed_items.get(it);
else{
boolean should_filter = true;//default: filter out
ArrayList<HyperEdge> l_survive_deductions= new ArrayList<HyperEdge>();
HyperEdge best_survive_deduction = null;
//### recursive call on each deduction, and update l_deductions and best_deduction
for(HyperEdge dt : it.hyperedges){
HyperEdge new_edge = filter_deduction(dt);//deduction-specifc operation
if(new_edge!=null){//survive
should_filter = false;//the item survives as long as at least one hyperedge survives
l_survive_deductions.add(new_edge);
if(best_survive_deduction ==null || best_survive_deduction.bestDerivationLogP>new_edge.bestDerivationLogP)
best_survive_deduction = new_edge;