/**
   * Recursively adds all audited properties of entity class and its superclasses.
   *
   * @param clazz Currently processed class.
   */
  private void addPropertiesFromClass(XClass clazz) {
    final Audited allClassAudited = computeAuditConfiguration(clazz);

    // look in the class
    addFromProperties(
        clazz.getDeclaredProperties("field"),
        "field",
        fieldAccessedPersistentProperties,
        allClassAudited);
    addFromProperties(
        clazz.getDeclaredProperties("property"),
        "property",
        propertyAccessedPersistentProperties,
        allClassAudited);

    if (allClassAudited != null || !auditedPropertiesHolder.isEmpty()) {
      final XClass superclazz = clazz.getSuperclass();
      if (!clazz.isInterface() && !"java.lang.Object".equals(superclazz.getName())) {
        addPropertiesFromClass(superclazz);
      }
    }
  }