def METHOD_NAME(
    build=False, compile=False, jit_compile=False, include_preprocessing=True
):
    discriminator = keras.Sequential(
        [
            keras.Input(shape=IMG_SIZE + (3,)),
            keras.layers.Conv2D(64, kernel_size=4, strides=2, padding="same"),
            keras.layers.LeakyReLU(alpha=0.2),
            keras.layers.Conv2D(128, kernel_size=4, strides=2, padding="same"),
            keras.layers.LeakyReLU(alpha=0.2),
            keras.layers.Conv2D(128, kernel_size=4, strides=2, padding="same"),
            keras.layers.LeakyReLU(alpha=0.2),
            keras.layers.Flatten(),
            keras.layers.Dropout(0.2),
            keras.layers.Dense(1, activation="sigmoid"),
        ],
        name="discriminator",
    )
    generator = keras.Sequential(
        [
            keras.Input(shape=(LATENT_DIM,)),
            keras.layers.Dense(8 * 8 * 128),
            keras.layers.Reshape((8, 8, 128)),
            keras.layers.Conv2DTranspose(
                128, kernel_size=4, strides=2, padding="same"
            ),
            keras.layers.LeakyReLU(alpha=0.2),
            keras.layers.Conv2DTranspose(
                256, kernel_size=4, strides=2, padding="same"
            ),
            keras.layers.LeakyReLU(alpha=0.2),
            keras.layers.Conv2DTranspose(
                512, kernel_size=4, strides=2, padding="same"
            ),
            keras.layers.LeakyReLU(alpha=0.2),
            keras.layers.Conv2D(
                3, kernel_size=5, padding="same", activation="sigmoid"
            ),
        ],
        name="generator",
    )
    gan = GAN(
        discriminator=discriminator, generator=generator, latent_dim=LATENT_DIM
    )
    if compile:
        gan.compile(
            d_optimizer=keras.optimizers.Adam(learning_rate=0.0001),
            g_optimizer=keras.optimizers.Adam(learning_rate=0.0001),
            loss_fn=keras.losses.BinaryCrossentropy(),
            jit_compile=jit_compile,
        )
    return gan