code: private static int getTypeModifiers(TypeElement type) {
      int modifiers = ElementUtil.fromModifierSet(type.getModifiers());
      if (type.getKind().isInterface()) {
        modifiers |= java.lang.reflect.Modifier.INTERFACE | java.lang.reflect.Modifier.ABSTRACT
            | java.lang.reflect.Modifier.STATIC;
      }
      if (ElementUtil.isSynthetic(type)) {
        modifiers |= ElementUtil.ACC_SYNTHETIC;
      }
      if (ElementUtil.isAnnotationType(type)) {
        modifiers |= ElementUtil.ACC_ANNOTATION;
      }
      if (ElementUtil.isEnum(type)) {
        modifiers |= ElementUtil.ACC_ENUM;
      }
      if (ElementUtil.isAnonymous(type)) {
        modifiers |= ElementUtil.ACC_ANONYMOUS;
      }
      return modifiers;
    }
docs: Returns the modifiers for a specified type, including internal ones.
  All class modifiers are defined in the JVM specification, table 4.1.