public void index(TypeDeclaration<?> type, int cuId) { EnumSet<Modifier> modifiers = type.getModifiers(); boolean isInterface = type instanceof ClassOrInterfaceDeclaration && ((ClassOrInterfaceDeclaration) type).isInterface(); boolean isAnnotation = type instanceof AnnotationDeclaration; boolean isEnumeration = type instanceof EnumDeclaration; boolean isClass = !isAnnotation && !isEnumeration && !isInterface; Type t = new Type(type.getNameAsString(), type.isPublic(), type.isStatic(), modifiers.contains(FINAL), modifiers.contains(ABSTRACT), isClass, isInterface, isEnumeration, isAnnotation, cuId); int typeId = typeDao.save(t); for (BodyDeclaration member : type.getMembers()) { bodyDeclarationIndexer.index(member, typeId); } } }