private boolean isEmpty(boolean forDisplay) {
    if (datasetFieldType.isPrimitive()) { // primitive
      for (String value : getValues()) {
        if (!StringUtils.isBlank(value) && !(forDisplay && DatasetField.NA_VALUE.equals(value))) {
          return false;
        }
      }
    } else { // compound
      for (DatasetFieldCompoundValue cv : datasetFieldCompoundValues) {
        for (DatasetField subField : cv.getChildDatasetFields()) {
          if (!subField.isEmpty(forDisplay)) {
            return false;
          }
        }
      }
    }

    return true;
  }