value-processor/src/org/immutables/value/processor/meta/ValueAttribute.java
void initAndValidate(@Nullable InstantiationCreator instantiationCreator) {
    initTypeName();

    if (instantiationCreator != null
        && !isGenerateLazy) {
      this.instantiation = instantiationCreator.tryInstantiateFor(
          reporter,
          returnTypeName,
          names,
          containingType,
          isGenerateDefault || isGenerateDerived);
    }

    initTypeKind();
    initOrderKind();
    initBuilderParamsIfApplicable();
    initMiscellaneous();

    initSpecialAnnotations();
    validateThrowsClause();
    validateTypeAndAnnotations();

    initAttributeValueType();
    if (supportBuiltinContainerTypes()) {
      initImmutableCopyOf();
    }

    initAttributeBuilder();
  }
void initAndValidate(@Nullable InstantiationCreator instantiationCreator) {
    initTypeName();

    if (instantiationCreator != null
        && !isGenerateLazy) {
      this.instantiation = instantiationCreator.tryInstantiateFor(
          reporter,
          returnTypeName,
          names,
          containingType,
          isGenerateDefault || isGenerateDerived);
    }

    initTypeKind();
    initOrderKind();
    initBuilderParamsIfApplicable();
    initMiscellaneous();

    initSpecialAnnotations();
    validateThrowsClause();
    validateTypeAndAnnotations();

    initAttributeValueType();
    if (supportBuiltinContainerTypes()) {
      initImmutableCopyOf();
    }

    initAttributeBuilder();
  }
Initialized Validates things that were not validated otherwise
@param instantiationCreator can instantiate encodings