public boolean requiresTrackIsSet() {
    if (isGenerateDefault && isPrimitive()) {
      // because primitive cannot be null
      return true;
    }
    if (isGenerateDefault && (isNullable() || isValidationCustomized())) {
      // nullable arrays should be able to distinguish null from default
      return true;
    }
    if (typeKind.isCollectionOrMapping() && isGenerateDefault) {
      // becase builder/collector is used and have to distinguish non-default value is set
      return true;
    }
    if (containingType.isUseStrictBuilder()
        && !isMandatory()
        && !typeKind.isCollectionOrMapping()) {
      // non-mandatory attributes without add/put methods
      // should be checked if it was already initialized
      // for a strict builder
      return true;
    }
    return false;
  }
Init (or override) internal attributes specific to JavaBeans
value-processor/src/org/immutables/value/processor/meta/ValueAttribute.java