private static boolean covers(String[] sup,String[] sub){
  outer:   for (int i=sub.length; i > 0; ) {
    String onm=sub[--i];
    String ocls=sub[--i];
    for (int j=sup.length; j > 0; ) {
      String nm=sup[--j];
      String cls=sup[--j];
      if (cls.equals(ocls) && (nm == null || (onm != null && nm.equals(onm)))) {
        continue outer;
      }
    }
    return false;
  }
  return true;
}

private static boolean covers ( String [ ] sup , String [ ] sub ) { outer : for ( int i = sub . length ; i > 0 ; ) { String onm = sub [ -- i ] ; String ocls = sub [ -- i ] ; for ( int j = sup . length ; j > 0 ; ) { String nm = sup [ -- j ] ; String cls = sup [ -- j ] ; if ( cls . equals ( ocls ) && ( nm == null || ( onm != null && nm . equals ( onm ) ) ) ) { continue outer ; } } return false ; } return true ; }
returns true if every principal that matches sub also matches sup .
