private boolean isVisible(TypeNameMatch curr, ICompilationUnit cu) {
   int flags = curr.getModifiers();
   if (Flags.isPrivate(flags)) {
     return false;
   }
   if (Flags.isPublic(flags) || Flags.isProtected(flags)) {
     return true;
   }
   return curr.getPackageName().equals(cu.getParent().getElementName());
 }
 protected void setAttributes(Object object, Element typeElement) {
   TypeNameMatch type = (TypeNameMatch) object;
   String handleId = type.getType().getHandleIdentifier();
   typeElement.setAttribute(NODE_HANDLE, handleId);
   typeElement.setAttribute(NODE_MODIFIERS, Integer.toString(type.getModifiers()));
   Long timestamp = (Long) fTimestampMapping.get(type);
   if (timestamp == null) {
     typeElement.setAttribute(NODE_TIMESTAMP, Long.toString(IResource.NULL_STAMP));
   } else {
     typeElement.setAttribute(NODE_TIMESTAMP, timestamp.toString());
   }
 }
 private boolean isOfKind(TypeNameMatch curr, int typeKinds, boolean is50OrHigher) {
   int flags = curr.getModifiers();
   if (Flags.isAnnotation(flags)) {
     return is50OrHigher && ((typeKinds & SimilarElementsRequestor.ANNOTATIONS) != 0);
   }
   if (Flags.isEnum(flags)) {
     return is50OrHigher && ((typeKinds & SimilarElementsRequestor.ENUMS) != 0);
   }
   if (Flags.isInterface(flags)) {
     return (typeKinds & SimilarElementsRequestor.INTERFACES) != 0;
   }
   return (typeKinds & SimilarElementsRequestor.CLASSES) != 0;
 }
 private synchronized void internalCheckConsistency(IProgressMonitor monitor)
     throws OperationCanceledException {
   // Setting fNeedsConsistencyCheck is necessary here since
   // markAsInconsistent isn't synchronized.
   fNeedsConsistencyCheck = true;
   List typesToCheck = new ArrayList(getKeys());
   monitor.beginTask(CorextMessages.TypeInfoHistory_consistency_check, typesToCheck.size());
   monitor.setTaskName(CorextMessages.TypeInfoHistory_consistency_check);
   for (Iterator iter = typesToCheck.iterator(); iter.hasNext(); ) {
     TypeNameMatch type = (TypeNameMatch) iter.next();
     long currentTimestamp = getContainerTimestamp(type);
     Long lastTested = (Long) fTimestampMapping.get(type);
     if (lastTested != null
         && currentTimestamp != IResource.NULL_STAMP
         && currentTimestamp == lastTested.longValue()
         && !isContainerDirty(type)) continue;
     try {
       IType jType = type.getType();
       if (jType == null || !jType.exists()) {
         remove(type);
       } else {
         // copy over the modifiers since they may have changed
         int modifiers = jType.getFlags();
         if (modifiers != type.getModifiers()) {
           replace(type, SearchEngine.createTypeNameMatch(jType, modifiers));
         } else {
           fTimestampMapping.put(type, new Long(currentTimestamp));
         }
       }
     } catch (JavaModelException e) {
       remove(type);
     }
     if (monitor.isCanceled()) throw new OperationCanceledException();
     monitor.worked(1);
   }
   monitor.done();
   fNeedsConsistencyCheck = false;
 }