public void crossReferenceImplementedInterfaces() throws CrossReferenceException
   {
      Set<String> unresolved = new HashSet<String>();
      for (String clazz : implementsIndex.keySet())
      {
         Set<String> intfs = implementsIndex.get(clazz);
         for (String intf : intfs)
         {
            if (ignoreScan(intf)) continue;

            Set<String> xrefAnnotations = classIndex.get(intf);
            if (xrefAnnotations == null)
            {
               unresolved.add(intf);
            }
            else
            {
               Set<String> classAnnotations = classIndex.get(clazz);
               if (classAnnotations == null)
               {
                  classIndex.put(clazz, xrefAnnotations);
               }
               else classAnnotations.addAll(xrefAnnotations);
               for (String annotation : xrefAnnotations)
               {
                  Set<String> classes = annotationIndex.get(annotation);
                  classes.add(clazz);
               }
            }
         }
      }
      if (unresolved.size() > 0) throw new CrossReferenceException(unresolved);

   }