public static <T extends DC> Set<Set<Pair<T,T>>> getAllPhis(Set<T> star, Set<T> stop)
  { Set<Set<Pair<T,T>>> allPhis=null;
    if(star==null || stop==null)
    { return allPhis;  
    }
    else//star!=null && stop!=null
    { Set<Pair<T,T>> allPairs=star.getAllPairs(stop);
      if(allPairs.size()==1)
      { return new Set(allPairs,null);
      }
      else//allPairs.size()!=1
      { for(Set<Pair<T,T>> p=allPairs;p!=null;p=p.next)
        { Set<Set<Pair<T,T>>> onePairSets=despatch(p.a,getAllPhis(star.del(p.a.fst()),stop.del(p.a.snd())));
          if(allPhis==null)
          { allPhis=new Set(onePairSets.a,null);
            for(Set<Set<Pair<T,T>>> t=onePairSets;t!=null;t=t.next)
            { allPhis=allPhis.ins(t.a);}
          }
          else
          { for(Set<Set<Pair<T,T>>> t=onePairSets;t!=null;t=t.next)
            { allPhis=allPhis.ins(t.a);}
          }    
        }
        return allPhis;
      } 
    }  
  }