private void validateState() {
        SmithyBuilder.requiredState("integrationClass", integrationClass);
        SmithyBuilder.requiredState("service", service);
        SmithyBuilder.requiredState("model", model);
        SmithyBuilder.requiredState("settings", settings);
        SmithyBuilder.requiredState("fileManifest", fileManifest);
        SmithyBuilder.requiredState("directedCodegen", directedCodegen);
        SmithyBuilder.requiredState("shapeGenerationOrder", shapeGenerationOrder);

        // Use a default integration finder implementation.
        if (integrationFinder == null) {
            LOGGER.fine(() -> String.format("Finding %s integrations using the %s class loader",
                    integrationClass.getName(),
                    CodegenDirector.class.getCanonicalName()));
            integrationClassLoader(getClass().getClassLoader());
        }
    }
Finalizes the Runner and performs directed code generation.

@throws IllegalStateException if a required value has not been provided.
smithy-codegen-core/src/main/java/software/amazon/smithy/codegen/core/directed/CodegenDirector.java