// CheckStyle: stop header check
// CheckStyle: stop line length check
// GENERATED CONTENT - DO NOT EDIT
// Source: ProfileReplaySupport.java
package org.graalvm.compiler.hotspot;

import java.util.*;
import org.graalvm.compiler.options.*;
import org.graalvm.compiler.options.OptionType;
import org.graalvm.compiler.options.OptionStability;

public class ProfileReplaySupport_OptionDescriptors implements OptionDescriptors {
    @Override
    public OptionDescriptor get(String value) {
        switch (value) {
        // CheckStyle: stop line length check
        case "LoadProfiles": {
            return OptionDescriptor.create(
                /*name*/ "LoadProfiles",
                /*optionType*/ OptionType.User,
                /*optionValueType*/ String.class,
                /*help*/ "Load per compilation profile information.",
                /*declaringClass*/ ProfileReplaySupport.Options.class,
                /*fieldName*/ "LoadProfiles",
                /*option*/ ProfileReplaySupport.Options.LoadProfiles,
                /*stability*/ OptionStability.EXPERIMENTAL,
                /*deprecated*/ false,
                /*deprecationMessage*/ "");
        }
        case "OverrideProfiles": {
            return OptionDescriptor.create(
                /*name*/ "OverrideProfiles",
                /*optionType*/ OptionType.User,
                /*optionValueType*/ Boolean.class,
                /*help*/ "Allow multiple compilations of the same method by overriding existing profiles.",
                /*declaringClass*/ ProfileReplaySupport.Options.class,
                /*fieldName*/ "OverrideProfiles",
                /*option*/ ProfileReplaySupport.Options.OverrideProfiles,
                /*stability*/ OptionStability.EXPERIMENTAL,
                /*deprecated*/ false,
                /*deprecationMessage*/ "");
        }
        case "PrintProfileLoading": {
            return OptionDescriptor.create(
                /*name*/ "PrintProfileLoading",
                /*optionType*/ OptionType.User,
                /*optionValueType*/ Boolean.class,
                /*help*/ "Print to stdout when a profile is loaded.",
                /*declaringClass*/ ProfileReplaySupport.Options.class,
                /*fieldName*/ "PrintProfileLoading",
                /*option*/ ProfileReplaySupport.Options.PrintProfileLoading,
                /*stability*/ OptionStability.EXPERIMENTAL,
                /*deprecated*/ false,
                /*deprecationMessage*/ "");
        }
        case "ProfileMethodFilter": {
            return OptionDescriptor.create(
                /*name*/ "ProfileMethodFilter",
                /*optionType*/ OptionType.User,
                /*optionValueType*/ String.class,
                /*help*/ "Restrict saving or loading of profiles based on this filter. See the MethodFilter option for the pattern syntax.",
                /*declaringClass*/ ProfileReplaySupport.Options.class,
                /*fieldName*/ "ProfileMethodFilter",
                /*option*/ ProfileReplaySupport.Options.ProfileMethodFilter,
                /*stability*/ OptionStability.EXPERIMENTAL,
                /*deprecated*/ false,
                /*deprecationMessage*/ "");
        }
        case "SaveProfiles": {
            return OptionDescriptor.create(
                /*name*/ "SaveProfiles",
                /*optionType*/ OptionType.User,
                /*optionValueType*/ Boolean.class,
                /*help*/ "Save per compilation profile information.",
                /*declaringClass*/ ProfileReplaySupport.Options.class,
                /*fieldName*/ "SaveProfiles",
                /*option*/ ProfileReplaySupport.Options.SaveProfiles,
                /*stability*/ OptionStability.EXPERIMENTAL,
                /*deprecated*/ false,
                /*deprecationMessage*/ "");
        }
        case "SaveProfilesPath": {
            return OptionDescriptor.create(
                /*name*/ "SaveProfilesPath",
                /*optionType*/ OptionType.User,
                /*optionValueType*/ String.class,
                /*help*/ "Path for saving compilation profiles. If the value is omitted the debug dump path will be used.",
                /*declaringClass*/ ProfileReplaySupport.Options.class,
                /*fieldName*/ "SaveProfilesPath",
                /*option*/ ProfileReplaySupport.Options.SaveProfilesPath,
                /*stability*/ OptionStability.EXPERIMENTAL,
                /*deprecated*/ false,
                /*deprecationMessage*/ "");
        }
        case "StrictProfiles": {
            return OptionDescriptor.create(
                /*name*/ "StrictProfiles",
                /*optionType*/ OptionType.User,
                /*optionValueType*/ Boolean.class,
                /*help*/ "Throw an error if an attempt is made to overwrite/update a profile loaded from disk.",
                /*declaringClass*/ ProfileReplaySupport.Options.class,
                /*fieldName*/ "StrictProfiles",
                /*option*/ ProfileReplaySupport.Options.StrictProfiles,
                /*stability*/ OptionStability.EXPERIMENTAL,
                /*deprecated*/ false,
                /*deprecationMessage*/ "");
        }
        case "WarnAboutCodeSignatureMismatch": {
            return OptionDescriptor.create(
                /*name*/ "WarnAboutCodeSignatureMismatch",
                /*optionType*/ OptionType.User,
                /*optionValueType*/ Boolean.class,
                /*help*/ "Print to stdout when a compilation performed with different profiles generates different backend code.",
                /*declaringClass*/ ProfileReplaySupport.Options.class,
                /*fieldName*/ "WarnAboutCodeSignatureMismatch",
                /*option*/ ProfileReplaySupport.Options.WarnAboutCodeSignatureMismatch,
                /*stability*/ OptionStability.EXPERIMENTAL,
                /*deprecated*/ false,
                /*deprecationMessage*/ "");
        }
        case "WarnAboutGraphSignatureMismatch": {
            return OptionDescriptor.create(
                /*name*/ "WarnAboutGraphSignatureMismatch",
                /*optionType*/ OptionType.User,
                /*optionValueType*/ Boolean.class,
                /*help*/ "Print to stdout when a compilation performed with different profiles generates different frontend IR.",
                /*declaringClass*/ ProfileReplaySupport.Options.class,
                /*fieldName*/ "WarnAboutGraphSignatureMismatch",
                /*option*/ ProfileReplaySupport.Options.WarnAboutGraphSignatureMismatch,
                /*stability*/ OptionStability.EXPERIMENTAL,
                /*deprecated*/ false,
                /*deprecationMessage*/ "");
        }
        case "WarnAboutNotCachedLoadedAccess": {
            return OptionDescriptor.create(
                /*name*/ "WarnAboutNotCachedLoadedAccess",
                /*optionType*/ OptionType.User,
                /*optionValueType*/ Boolean.class,
                /*help*/ "Print to stdout when requesting profiling info not present in a loaded profile.",
                /*declaringClass*/ ProfileReplaySupport.Options.class,
                /*fieldName*/ "WarnAboutNotCachedLoadedAccess",
                /*option*/ ProfileReplaySupport.Options.WarnAboutNotCachedLoadedAccess,
                /*stability*/ OptionStability.EXPERIMENTAL,
                /*deprecated*/ false,
                /*deprecationMessage*/ "");
        }
        // CheckStyle: resume line length check
        }
        return null;
    }

    @Override
    public Iterator<OptionDescriptor> iterator() {
        return new Iterator<>() {
            int i = 0;
            @Override
            public boolean hasNext() {
                return i < 10;
            }
            @Override
            public OptionDescriptor next() {
                switch (i++) {
                    case 0: return get("LoadProfiles");
                    case 1: return get("OverrideProfiles");
                    case 2: return get("PrintProfileLoading");
                    case 3: return get("ProfileMethodFilter");
                    case 4: return get("SaveProfiles");
                    case 5: return get("SaveProfilesPath");
                    case 6: return get("StrictProfiles");
                    case 7: return get("WarnAboutCodeSignatureMismatch");
                    case 8: return get("WarnAboutGraphSignatureMismatch");
                    case 9: return get("WarnAboutNotCachedLoadedAccess");
                }
                throw new NoSuchElementException();
            }
        };
    }
}
