All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.camel.dsl.yaml.deserializers.ModelDeserializers Maven / Gradle / Ivy

There is a newer version: 4.8.1
Show newest version
// Generated by camel-yaml-dsl-maven-plugin - do NOT edit this file!
package org.apache.camel.dsl.yaml.deserializers;

import java.lang.Object;
import java.lang.Override;
import java.lang.String;
import java.lang.SuppressWarnings;
import java.util.Map;
import org.apache.camel.CamelContext;
import org.apache.camel.dsl.yaml.common.YamlDeserializerBase;
import org.apache.camel.dsl.yaml.common.YamlDeserializerEndpointAwareBase;
import org.apache.camel.dsl.yaml.common.YamlDeserializerSupport;
import org.apache.camel.model.AggregateDefinition;
import org.apache.camel.model.BeanDefinition;
import org.apache.camel.model.CatchDefinition;
import org.apache.camel.model.ChoiceDefinition;
import org.apache.camel.model.CircuitBreakerDefinition;
import org.apache.camel.model.ClaimCheckDefinition;
import org.apache.camel.model.ContextScanDefinition;
import org.apache.camel.model.ConvertBodyDefinition;
import org.apache.camel.model.DataFormatDefinition;
import org.apache.camel.model.DelayDefinition;
import org.apache.camel.model.DescriptionDefinition;
import org.apache.camel.model.DynamicRouterDefinition;
import org.apache.camel.model.EnrichDefinition;
import org.apache.camel.model.ErrorHandlerDefinition;
import org.apache.camel.model.FaultToleranceConfigurationDefinition;
import org.apache.camel.model.FilterDefinition;
import org.apache.camel.model.FinallyDefinition;
import org.apache.camel.model.GlobalOptionDefinition;
import org.apache.camel.model.GlobalOptionsDefinition;
import org.apache.camel.model.IdempotentConsumerDefinition;
import org.apache.camel.model.InOnlyDefinition;
import org.apache.camel.model.InOutDefinition;
import org.apache.camel.model.InputTypeDefinition;
import org.apache.camel.model.InterceptDefinition;
import org.apache.camel.model.InterceptFromDefinition;
import org.apache.camel.model.InterceptSendToEndpointDefinition;
import org.apache.camel.model.LoadBalanceDefinition;
import org.apache.camel.model.LogDefinition;
import org.apache.camel.model.LoopDefinition;
import org.apache.camel.model.MarshalDefinition;
import org.apache.camel.model.MulticastDefinition;
import org.apache.camel.model.OnCompletionDefinition;
import org.apache.camel.model.OnExceptionDefinition;
import org.apache.camel.model.OnFallbackDefinition;
import org.apache.camel.model.OptimisticLockRetryPolicyDefinition;
import org.apache.camel.model.OtherwiseDefinition;
import org.apache.camel.model.OutputDefinition;
import org.apache.camel.model.OutputTypeDefinition;
import org.apache.camel.model.PackageScanDefinition;
import org.apache.camel.model.PausableDefinition;
import org.apache.camel.model.PipelineDefinition;
import org.apache.camel.model.PolicyDefinition;
import org.apache.camel.model.PollEnrichDefinition;
import org.apache.camel.model.ProcessDefinition;
import org.apache.camel.model.PropertyDefinition;
import org.apache.camel.model.PropertyExpressionDefinition;
import org.apache.camel.model.RecipientListDefinition;
import org.apache.camel.model.RedeliveryPolicyDefinition;
import org.apache.camel.model.RemoveHeaderDefinition;
import org.apache.camel.model.RemoveHeadersDefinition;
import org.apache.camel.model.RemovePropertiesDefinition;
import org.apache.camel.model.RemovePropertyDefinition;
import org.apache.camel.model.ResequenceDefinition;
import org.apache.camel.model.Resilience4jConfigurationDefinition;
import org.apache.camel.model.RestContextRefDefinition;
import org.apache.camel.model.ResumableDefinition;
import org.apache.camel.model.RollbackDefinition;
import org.apache.camel.model.RouteBuilderDefinition;
import org.apache.camel.model.RouteConfigurationContextRefDefinition;
import org.apache.camel.model.RouteContextRefDefinition;
import org.apache.camel.model.RouteDefinition;
import org.apache.camel.model.RouteTemplateParameterDefinition;
import org.apache.camel.model.RoutingSlipDefinition;
import org.apache.camel.model.SagaActionUriDefinition;
import org.apache.camel.model.SagaDefinition;
import org.apache.camel.model.SamplingDefinition;
import org.apache.camel.model.ScriptDefinition;
import org.apache.camel.model.SetBodyDefinition;
import org.apache.camel.model.SetExchangePatternDefinition;
import org.apache.camel.model.SetHeaderDefinition;
import org.apache.camel.model.SetPropertyDefinition;
import org.apache.camel.model.SortDefinition;
import org.apache.camel.model.SplitDefinition;
import org.apache.camel.model.StepDefinition;
import org.apache.camel.model.StopDefinition;
import org.apache.camel.model.TemplatedRouteParameterDefinition;
import org.apache.camel.model.ThreadPoolProfileDefinition;
import org.apache.camel.model.ThreadsDefinition;
import org.apache.camel.model.ThrottleDefinition;
import org.apache.camel.model.ThrowExceptionDefinition;
import org.apache.camel.model.ToDefinition;
import org.apache.camel.model.ToDynamicDefinition;
import org.apache.camel.model.TransactedDefinition;
import org.apache.camel.model.TransformDefinition;
import org.apache.camel.model.TryDefinition;
import org.apache.camel.model.UnmarshalDefinition;
import org.apache.camel.model.ValidateDefinition;
import org.apache.camel.model.ValueDefinition;
import org.apache.camel.model.WhenDefinition;
import org.apache.camel.model.WhenSkipSendToEndpointDefinition;
import org.apache.camel.model.WireTapDefinition;
import org.apache.camel.model.cloud.BlacklistServiceCallServiceFilterConfiguration;
import org.apache.camel.model.cloud.CachingServiceCallServiceDiscoveryConfiguration;
import org.apache.camel.model.cloud.CombinedServiceCallServiceDiscoveryConfiguration;
import org.apache.camel.model.cloud.CombinedServiceCallServiceFilterConfiguration;
import org.apache.camel.model.cloud.ConsulServiceCallServiceDiscoveryConfiguration;
import org.apache.camel.model.cloud.CustomServiceCallServiceFilterConfiguration;
import org.apache.camel.model.cloud.DefaultServiceCallServiceLoadBalancerConfiguration;
import org.apache.camel.model.cloud.DnsServiceCallServiceDiscoveryConfiguration;
import org.apache.camel.model.cloud.HealthyServiceCallServiceFilterConfiguration;
import org.apache.camel.model.cloud.KubernetesServiceCallServiceDiscoveryConfiguration;
import org.apache.camel.model.cloud.PassThroughServiceCallServiceFilterConfiguration;
import org.apache.camel.model.cloud.ServiceCallConfigurationDefinition;
import org.apache.camel.model.cloud.ServiceCallDefinition;
import org.apache.camel.model.cloud.ServiceCallExpressionConfiguration;
import org.apache.camel.model.cloud.ServiceCallServiceChooserConfiguration;
import org.apache.camel.model.cloud.ServiceCallServiceDiscoveryConfiguration;
import org.apache.camel.model.cloud.ServiceCallServiceFilterConfiguration;
import org.apache.camel.model.cloud.ServiceCallServiceLoadBalancerConfiguration;
import org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration;
import org.apache.camel.model.cloud.ZooKeeperServiceCallServiceDiscoveryConfiguration;
import org.apache.camel.model.config.BatchResequencerConfig;
import org.apache.camel.model.config.StreamResequencerConfig;
import org.apache.camel.model.dataformat.ASN1DataFormat;
import org.apache.camel.model.dataformat.Any23DataFormat;
import org.apache.camel.model.dataformat.AvroDataFormat;
import org.apache.camel.model.dataformat.BarcodeDataFormat;
import org.apache.camel.model.dataformat.Base64DataFormat;
import org.apache.camel.model.dataformat.BindyDataFormat;
import org.apache.camel.model.dataformat.CBORDataFormat;
import org.apache.camel.model.dataformat.CryptoDataFormat;
import org.apache.camel.model.dataformat.CsvDataFormat;
import org.apache.camel.model.dataformat.CustomDataFormat;
import org.apache.camel.model.dataformat.DataFormatsDefinition;
import org.apache.camel.model.dataformat.FhirJsonDataFormat;
import org.apache.camel.model.dataformat.FhirXmlDataFormat;
import org.apache.camel.model.dataformat.FlatpackDataFormat;
import org.apache.camel.model.dataformat.GrokDataFormat;
import org.apache.camel.model.dataformat.GzipDeflaterDataFormat;
import org.apache.camel.model.dataformat.HL7DataFormat;
import org.apache.camel.model.dataformat.IcalDataFormat;
import org.apache.camel.model.dataformat.JacksonXMLDataFormat;
import org.apache.camel.model.dataformat.JaxbDataFormat;
import org.apache.camel.model.dataformat.JsonApiDataFormat;
import org.apache.camel.model.dataformat.JsonDataFormat;
import org.apache.camel.model.dataformat.LZFDataFormat;
import org.apache.camel.model.dataformat.MimeMultipartDataFormat;
import org.apache.camel.model.dataformat.PGPDataFormat;
import org.apache.camel.model.dataformat.ProtobufDataFormat;
import org.apache.camel.model.dataformat.RssDataFormat;
import org.apache.camel.model.dataformat.SoapDataFormat;
import org.apache.camel.model.dataformat.SwiftMtDataFormat;
import org.apache.camel.model.dataformat.SwiftMxDataFormat;
import org.apache.camel.model.dataformat.SyslogDataFormat;
import org.apache.camel.model.dataformat.TarFileDataFormat;
import org.apache.camel.model.dataformat.ThriftDataFormat;
import org.apache.camel.model.dataformat.TidyMarkupDataFormat;
import org.apache.camel.model.dataformat.UniVocityCsvDataFormat;
import org.apache.camel.model.dataformat.UniVocityFixedDataFormat;
import org.apache.camel.model.dataformat.UniVocityHeader;
import org.apache.camel.model.dataformat.UniVocityTsvDataFormat;
import org.apache.camel.model.dataformat.XMLSecurityDataFormat;
import org.apache.camel.model.dataformat.XStreamDataFormat;
import org.apache.camel.model.dataformat.YAMLDataFormat;
import org.apache.camel.model.dataformat.YAMLTypeFilterDefinition;
import org.apache.camel.model.dataformat.ZipDeflaterDataFormat;
import org.apache.camel.model.dataformat.ZipFileDataFormat;
import org.apache.camel.model.errorhandler.DeadLetterChannelDefinition;
import org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition;
import org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition;
import org.apache.camel.model.errorhandler.NoErrorHandlerDefinition;
import org.apache.camel.model.errorhandler.RefErrorHandlerDefinition;
import org.apache.camel.model.errorhandler.SpringTransactionErrorHandlerDefinition;
import org.apache.camel.model.language.CSimpleExpression;
import org.apache.camel.model.language.ConstantExpression;
import org.apache.camel.model.language.DatasonnetExpression;
import org.apache.camel.model.language.ExchangePropertyExpression;
import org.apache.camel.model.language.ExpressionDefinition;
import org.apache.camel.model.language.GroovyExpression;
import org.apache.camel.model.language.HeaderExpression;
import org.apache.camel.model.language.Hl7TerserExpression;
import org.apache.camel.model.language.JavaScriptExpression;
import org.apache.camel.model.language.JoorExpression;
import org.apache.camel.model.language.JqExpression;
import org.apache.camel.model.language.JsonPathExpression;
import org.apache.camel.model.language.LanguageExpression;
import org.apache.camel.model.language.MethodCallExpression;
import org.apache.camel.model.language.MvelExpression;
import org.apache.camel.model.language.OgnlExpression;
import org.apache.camel.model.language.PythonExpression;
import org.apache.camel.model.language.RefExpression;
import org.apache.camel.model.language.SimpleExpression;
import org.apache.camel.model.language.SpELExpression;
import org.apache.camel.model.language.TokenizerExpression;
import org.apache.camel.model.language.XMLTokenizerExpression;
import org.apache.camel.model.language.XPathExpression;
import org.apache.camel.model.language.XQueryExpression;
import org.apache.camel.model.loadbalancer.CustomLoadBalancerDefinition;
import org.apache.camel.model.loadbalancer.FailoverLoadBalancerDefinition;
import org.apache.camel.model.loadbalancer.RandomLoadBalancerDefinition;
import org.apache.camel.model.loadbalancer.RoundRobinLoadBalancerDefinition;
import org.apache.camel.model.loadbalancer.StickyLoadBalancerDefinition;
import org.apache.camel.model.loadbalancer.TopicLoadBalancerDefinition;
import org.apache.camel.model.loadbalancer.WeightedLoadBalancerDefinition;
import org.apache.camel.model.rest.ApiKeyDefinition;
import org.apache.camel.model.rest.BasicAuthDefinition;
import org.apache.camel.model.rest.BearerTokenDefinition;
import org.apache.camel.model.rest.DeleteDefinition;
import org.apache.camel.model.rest.GetDefinition;
import org.apache.camel.model.rest.HeadDefinition;
import org.apache.camel.model.rest.MutualTLSDefinition;
import org.apache.camel.model.rest.OAuth2Definition;
import org.apache.camel.model.rest.OpenIdConnectDefinition;
import org.apache.camel.model.rest.ParamDefinition;
import org.apache.camel.model.rest.PatchDefinition;
import org.apache.camel.model.rest.PostDefinition;
import org.apache.camel.model.rest.PutDefinition;
import org.apache.camel.model.rest.ResponseHeaderDefinition;
import org.apache.camel.model.rest.ResponseMessageDefinition;
import org.apache.camel.model.rest.RestBindingDefinition;
import org.apache.camel.model.rest.RestConfigurationDefinition;
import org.apache.camel.model.rest.RestDefinition;
import org.apache.camel.model.rest.RestPropertyDefinition;
import org.apache.camel.model.rest.RestSecuritiesDefinition;
import org.apache.camel.model.rest.RestsDefinition;
import org.apache.camel.model.rest.SecurityDefinition;
import org.apache.camel.model.transformer.CustomTransformerDefinition;
import org.apache.camel.model.transformer.DataFormatTransformerDefinition;
import org.apache.camel.model.transformer.EndpointTransformerDefinition;
import org.apache.camel.model.transformer.TransformersDefinition;
import org.apache.camel.model.validator.CustomValidatorDefinition;
import org.apache.camel.model.validator.EndpointValidatorDefinition;
import org.apache.camel.model.validator.PredicateValidatorDefinition;
import org.apache.camel.model.validator.ValidatorsDefinition;
import org.apache.camel.spi.annotations.YamlIn;
import org.apache.camel.spi.annotations.YamlProperty;
import org.apache.camel.spi.annotations.YamlType;
import org.snakeyaml.engine.v2.nodes.MappingNode;
import org.snakeyaml.engine.v2.nodes.Node;

@SuppressWarnings("PMD.UnnecessaryFullyQualifiedName")
public final class ModelDeserializers extends YamlDeserializerSupport {
    private ModelDeserializers() {
    }

    @YamlType(
            nodes = "asn1",
            inline = true,
            types = org.apache.camel.model.dataformat.ASN1DataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "unmarshal-type", type = "string"),
                    @YamlProperty(name = "using-iterator", type = "boolean")
            }
    )
    public static class ASN1DataFormatDeserializer extends YamlDeserializerBase {
        public ASN1DataFormatDeserializer() {
            super(ASN1DataFormat.class);
        }

        @Override
        protected ASN1DataFormat newInstance() {
            return new ASN1DataFormat();
        }

        @Override
        protected ASN1DataFormat newInstance(String value) {
            return new ASN1DataFormat(value);
        }

        @Override
        protected boolean setProperty(ASN1DataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "unmarshal-type": {
                    String val = asText(node);
                    target.setUnmarshalTypeName(val);
                    break;
                }
                case "using-iterator": {
                    String val = asText(node);
                    target.setUsingIterator(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "aggregate",
            types = org.apache.camel.model.AggregateDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "aggregate-controller", type = "string"),
                    @YamlProperty(name = "aggregation-repository", type = "string"),
                    @YamlProperty(name = "aggregation-strategy", type = "string", required = true),
                    @YamlProperty(name = "aggregation-strategy-method-allow-null", type = "boolean"),
                    @YamlProperty(name = "aggregation-strategy-method-name", type = "string"),
                    @YamlProperty(name = "close-correlation-key-on-completion", type = "number"),
                    @YamlProperty(name = "complete-all-on-stop", type = "boolean"),
                    @YamlProperty(name = "completion-from-batch-consumer", type = "boolean"),
                    @YamlProperty(name = "completion-interval", type = "string"),
                    @YamlProperty(name = "completion-on-new-correlation-group", type = "boolean"),
                    @YamlProperty(name = "completion-predicate", type = "object:org.apache.camel.model.ExpressionSubElementDefinition"),
                    @YamlProperty(name = "completion-size", type = "number"),
                    @YamlProperty(name = "completion-size-expression", type = "object:org.apache.camel.model.ExpressionSubElementDefinition"),
                    @YamlProperty(name = "completion-timeout", type = "string"),
                    @YamlProperty(name = "completion-timeout-checker-interval", type = "string"),
                    @YamlProperty(name = "completion-timeout-expression", type = "object:org.apache.camel.model.ExpressionSubElementDefinition"),
                    @YamlProperty(name = "correlation-expression", type = "object:org.apache.camel.model.ExpressionSubElementDefinition"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "discard-on-aggregation-failure", type = "boolean"),
                    @YamlProperty(name = "discard-on-completion-timeout", type = "boolean"),
                    @YamlProperty(name = "eager-check-completion", type = "boolean"),
                    @YamlProperty(name = "executor-service", type = "string"),
                    @YamlProperty(name = "force-completion-on-stop", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ignore-invalid-correlation-keys", type = "boolean"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "optimistic-lock-retry-policy", type = "object:org.apache.camel.model.OptimisticLockRetryPolicyDefinition"),
                    @YamlProperty(name = "optimistic-locking", type = "boolean"),
                    @YamlProperty(name = "parallel-processing", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition"),
                    @YamlProperty(name = "timeout-checker-executor-service", type = "string")
            }
    )
    public static class AggregateDefinitionDeserializer extends YamlDeserializerBase {
        public AggregateDefinitionDeserializer() {
            super(AggregateDefinition.class);
        }

        @Override
        protected AggregateDefinition newInstance() {
            return new AggregateDefinition();
        }

        @Override
        protected boolean setProperty(AggregateDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "aggregate-controller": {
                    String val = asText(node);
                    target.setAggregateController(val);
                    break;
                }
                case "aggregation-repository": {
                    String val = asText(node);
                    target.setAggregationRepository(val);
                    break;
                }
                case "aggregation-strategy": {
                    String val = asText(node);
                    target.setAggregationStrategy(val);
                    break;
                }
                case "aggregation-strategy-method-allow-null": {
                    String val = asText(node);
                    target.setAggregationStrategyMethodAllowNull(val);
                    break;
                }
                case "aggregation-strategy-method-name": {
                    String val = asText(node);
                    target.setAggregationStrategyMethodName(val);
                    break;
                }
                case "close-correlation-key-on-completion": {
                    String val = asText(node);
                    target.setCloseCorrelationKeyOnCompletion(val);
                    break;
                }
                case "complete-all-on-stop": {
                    String val = asText(node);
                    target.setCompleteAllOnStop(val);
                    break;
                }
                case "completion-from-batch-consumer": {
                    String val = asText(node);
                    target.setCompletionFromBatchConsumer(val);
                    break;
                }
                case "completion-interval": {
                    String val = asText(node);
                    target.setCompletionInterval(val);
                    break;
                }
                case "completion-on-new-correlation-group": {
                    String val = asText(node);
                    target.setCompletionOnNewCorrelationGroup(val);
                    break;
                }
                case "completion-predicate": {
                    org.apache.camel.model.ExpressionSubElementDefinition val = asType(node, org.apache.camel.model.ExpressionSubElementDefinition.class);
                    target.setCompletionPredicate(val);
                    break;
                }
                case "completion-size": {
                    String val = asText(node);
                    target.setCompletionSize(val);
                    break;
                }
                case "completion-size-expression": {
                    org.apache.camel.model.ExpressionSubElementDefinition val = asType(node, org.apache.camel.model.ExpressionSubElementDefinition.class);
                    target.setCompletionSizeExpression(val);
                    break;
                }
                case "completion-timeout": {
                    String val = asText(node);
                    target.setCompletionTimeout(val);
                    break;
                }
                case "completion-timeout-checker-interval": {
                    String val = asText(node);
                    target.setCompletionTimeoutCheckerInterval(val);
                    break;
                }
                case "completion-timeout-expression": {
                    org.apache.camel.model.ExpressionSubElementDefinition val = asType(node, org.apache.camel.model.ExpressionSubElementDefinition.class);
                    target.setCompletionTimeoutExpression(val);
                    break;
                }
                case "correlation-expression": {
                    org.apache.camel.model.ExpressionSubElementDefinition val = asType(node, org.apache.camel.model.ExpressionSubElementDefinition.class);
                    target.setCorrelationExpression(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "discard-on-aggregation-failure": {
                    String val = asText(node);
                    target.setDiscardOnAggregationFailure(val);
                    break;
                }
                case "discard-on-completion-timeout": {
                    String val = asText(node);
                    target.setDiscardOnCompletionTimeout(val);
                    break;
                }
                case "eager-check-completion": {
                    String val = asText(node);
                    target.setEagerCheckCompletion(val);
                    break;
                }
                case "executor-service": {
                    String val = asText(node);
                    target.setExecutorService(val);
                    break;
                }
                case "force-completion-on-stop": {
                    String val = asText(node);
                    target.setForceCompletionOnStop(val);
                    break;
                }
                case "ignore-invalid-correlation-keys": {
                    String val = asText(node);
                    target.setIgnoreInvalidCorrelationKeys(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "optimistic-lock-retry-policy": {
                    org.apache.camel.model.OptimisticLockRetryPolicyDefinition val = asType(node, org.apache.camel.model.OptimisticLockRetryPolicyDefinition.class);
                    target.setOptimisticLockRetryPolicyDefinition(val);
                    break;
                }
                case "optimistic-locking": {
                    String val = asText(node);
                    target.setOptimisticLocking(val);
                    break;
                }
                case "parallel-processing": {
                    String val = asText(node);
                    target.setParallelProcessing(val);
                    break;
                }
                case "timeout-checker-executor-service": {
                    String val = asText(node);
                    target.setTimeoutCheckerExecutorService(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "any23",
            inline = true,
            types = org.apache.camel.model.dataformat.Any23DataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "base-uri", type = "string"),
                    @YamlProperty(name = "configuration", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "extractors", type = "array:string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "output-format", type = "enum:NTRIPLES,TURTLE,NQUADS,RDFXML,JSONLD,RDFJSON,RDF4JMODEL")
            }
    )
    public static class Any23DataFormatDeserializer extends YamlDeserializerBase {
        public Any23DataFormatDeserializer() {
            super(Any23DataFormat.class);
        }

        @Override
        protected Any23DataFormat newInstance() {
            return new Any23DataFormat();
        }

        @Override
        protected Any23DataFormat newInstance(String value) {
            return new Any23DataFormat(value);
        }

        @Override
        protected boolean setProperty(Any23DataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "base-uri": {
                    String val = asText(node);
                    target.setBaseUri(val);
                    break;
                }
                case "configuration": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setConfiguration(val);
                    break;
                }
                case "extractors": {
                    java.util.List val = asStringList(node);
                    target.setExtractors(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "output-format": {
                    String val = asText(node);
                    target.setOutputFormat(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "api-key",
                    "apiKey"
            },
            types = org.apache.camel.model.rest.ApiKeyDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "in-cookie", type = "boolean"),
                    @YamlProperty(name = "in-header", type = "boolean"),
                    @YamlProperty(name = "in-query", type = "boolean"),
                    @YamlProperty(name = "key", type = "string", required = true),
                    @YamlProperty(name = "name", type = "string", required = true)
            }
    )
    public static class ApiKeyDefinitionDeserializer extends YamlDeserializerBase {
        public ApiKeyDefinitionDeserializer() {
            super(ApiKeyDefinition.class);
        }

        @Override
        protected ApiKeyDefinition newInstance() {
            return new ApiKeyDefinition();
        }

        @Override
        protected boolean setProperty(ApiKeyDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "description": {
                    String val = asText(node);
                    target.setDescription(val);
                    break;
                }
                case "in-cookie": {
                    String val = asText(node);
                    target.setInCookie(val);
                    break;
                }
                case "in-header": {
                    String val = asText(node);
                    target.setInHeader(val);
                    break;
                }
                case "in-query": {
                    String val = asText(node);
                    target.setInQuery(val);
                    break;
                }
                case "key": {
                    String val = asText(node);
                    target.setKey(val);
                    break;
                }
                case "name": {
                    String val = asText(node);
                    target.setName(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "avro",
            inline = true,
            types = org.apache.camel.model.dataformat.AvroDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-jms-type", type = "boolean"),
                    @YamlProperty(name = "allow-unmarshall-type", type = "boolean"),
                    @YamlProperty(name = "auto-discover-object-mapper", type = "boolean"),
                    @YamlProperty(name = "auto-discover-schema-resolver", type = "boolean"),
                    @YamlProperty(name = "collection-type", type = "string"),
                    @YamlProperty(name = "content-type-header", type = "boolean"),
                    @YamlProperty(name = "disable-features", type = "string"),
                    @YamlProperty(name = "enable-features", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "include", type = "string"),
                    @YamlProperty(name = "instance-class-name", type = "string"),
                    @YamlProperty(name = "json-view", type = "string"),
                    @YamlProperty(name = "library", type = "enum:ApacheAvro,Jackson"),
                    @YamlProperty(name = "module-class-names", type = "string"),
                    @YamlProperty(name = "module-refs", type = "string"),
                    @YamlProperty(name = "object-mapper", type = "string"),
                    @YamlProperty(name = "schema-resolver", type = "string"),
                    @YamlProperty(name = "timezone", type = "string"),
                    @YamlProperty(name = "unmarshal-type", type = "string"),
                    @YamlProperty(name = "use-default-object-mapper", type = "boolean"),
                    @YamlProperty(name = "use-list", type = "boolean")
            }
    )
    public static class AvroDataFormatDeserializer extends YamlDeserializerBase {
        public AvroDataFormatDeserializer() {
            super(AvroDataFormat.class);
        }

        @Override
        protected AvroDataFormat newInstance() {
            return new AvroDataFormat();
        }

        @Override
        protected AvroDataFormat newInstance(String value) {
            return new AvroDataFormat(value);
        }

        @Override
        protected boolean setProperty(AvroDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-jms-type": {
                    String val = asText(node);
                    target.setAllowJmsType(val);
                    break;
                }
                case "allow-unmarshall-type": {
                    String val = asText(node);
                    target.setAllowUnmarshallType(val);
                    break;
                }
                case "auto-discover-object-mapper": {
                    String val = asText(node);
                    target.setAutoDiscoverObjectMapper(val);
                    break;
                }
                case "auto-discover-schema-resolver": {
                    String val = asText(node);
                    target.setAutoDiscoverSchemaResolver(val);
                    break;
                }
                case "collection-type": {
                    String val = asText(node);
                    target.setCollectionTypeName(val);
                    break;
                }
                case "content-type-header": {
                    String val = asText(node);
                    target.setContentTypeHeader(val);
                    break;
                }
                case "disable-features": {
                    String val = asText(node);
                    target.setDisableFeatures(val);
                    break;
                }
                case "enable-features": {
                    String val = asText(node);
                    target.setEnableFeatures(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "include": {
                    String val = asText(node);
                    target.setInclude(val);
                    break;
                }
                case "instance-class-name": {
                    String val = asText(node);
                    target.setInstanceClassName(val);
                    break;
                }
                case "json-view": {
                    String val = asText(node);
                    target.setJsonViewTypeName(val);
                    break;
                }
                case "library": {
                    target.setLibrary(asEnum(node, org.apache.camel.model.dataformat.AvroLibrary.class));
                    break;
                }
                case "module-class-names": {
                    String val = asText(node);
                    target.setModuleClassNames(val);
                    break;
                }
                case "module-refs": {
                    String val = asText(node);
                    target.setModuleRefs(val);
                    break;
                }
                case "object-mapper": {
                    String val = asText(node);
                    target.setObjectMapper(val);
                    break;
                }
                case "schema-resolver": {
                    String val = asText(node);
                    target.setSchemaResolver(val);
                    break;
                }
                case "timezone": {
                    String val = asText(node);
                    target.setTimezone(val);
                    break;
                }
                case "unmarshal-type": {
                    String val = asText(node);
                    target.setUnmarshalTypeName(val);
                    break;
                }
                case "use-default-object-mapper": {
                    String val = asText(node);
                    target.setUseDefaultObjectMapper(val);
                    break;
                }
                case "use-list": {
                    String val = asText(node);
                    target.setUseList(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "barcode",
            types = org.apache.camel.model.dataformat.BarcodeDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "barcode-format", type = "string"),
                    @YamlProperty(name = "height", type = "number"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "image-type", type = "string"),
                    @YamlProperty(name = "width", type = "number")
            }
    )
    public static class BarcodeDataFormatDeserializer extends YamlDeserializerBase {
        public BarcodeDataFormatDeserializer() {
            super(BarcodeDataFormat.class);
        }

        @Override
        protected BarcodeDataFormat newInstance() {
            return new BarcodeDataFormat();
        }

        @Override
        protected boolean setProperty(BarcodeDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "barcode-format": {
                    String val = asText(node);
                    target.setBarcodeFormat(val);
                    break;
                }
                case "height": {
                    String val = asText(node);
                    target.setHeight(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "image-type": {
                    String val = asText(node);
                    target.setImageType(val);
                    break;
                }
                case "width": {
                    String val = asText(node);
                    target.setWidth(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "base64",
            types = org.apache.camel.model.dataformat.Base64DataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "line-length", type = "number"),
                    @YamlProperty(name = "line-separator", type = "string"),
                    @YamlProperty(name = "url-safe", type = "boolean")
            }
    )
    public static class Base64DataFormatDeserializer extends YamlDeserializerBase {
        public Base64DataFormatDeserializer() {
            super(Base64DataFormat.class);
        }

        @Override
        protected Base64DataFormat newInstance() {
            return new Base64DataFormat();
        }

        @Override
        protected boolean setProperty(Base64DataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "line-length": {
                    String val = asText(node);
                    target.setLineLength(val);
                    break;
                }
                case "line-separator": {
                    String val = asText(node);
                    target.setLineSeparator(val);
                    break;
                }
                case "url-safe": {
                    String val = asText(node);
                    target.setUrlSafe(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "basic-auth",
                    "basicAuth"
            },
            types = org.apache.camel.model.rest.BasicAuthDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "key", type = "string", required = true)
            }
    )
    public static class BasicAuthDefinitionDeserializer extends YamlDeserializerBase {
        public BasicAuthDefinitionDeserializer() {
            super(BasicAuthDefinition.class);
        }

        @Override
        protected BasicAuthDefinition newInstance() {
            return new BasicAuthDefinition();
        }

        @Override
        protected boolean setProperty(BasicAuthDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "description": {
                    String val = asText(node);
                    target.setDescription(val);
                    break;
                }
                case "key": {
                    String val = asText(node);
                    target.setKey(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "batch-config",
            types = org.apache.camel.model.config.BatchResequencerConfig.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-duplicates", type = "boolean"),
                    @YamlProperty(name = "batch-size", type = "number"),
                    @YamlProperty(name = "batch-timeout", type = "string"),
                    @YamlProperty(name = "ignore-invalid-exchanges", type = "boolean"),
                    @YamlProperty(name = "reverse", type = "boolean")
            }
    )
    public static class BatchResequencerConfigDeserializer extends YamlDeserializerBase {
        public BatchResequencerConfigDeserializer() {
            super(BatchResequencerConfig.class);
        }

        @Override
        protected BatchResequencerConfig newInstance() {
            return new BatchResequencerConfig();
        }

        @Override
        protected boolean setProperty(BatchResequencerConfig target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-duplicates": {
                    String val = asText(node);
                    target.setAllowDuplicates(val);
                    break;
                }
                case "batch-size": {
                    String val = asText(node);
                    target.setBatchSize(val);
                    break;
                }
                case "batch-timeout": {
                    String val = asText(node);
                    target.setBatchTimeout(val);
                    break;
                }
                case "ignore-invalid-exchanges": {
                    String val = asText(node);
                    target.setIgnoreInvalidExchanges(val);
                    break;
                }
                case "reverse": {
                    String val = asText(node);
                    target.setReverse(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "bean",
            inline = true,
            types = org.apache.camel.model.BeanDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "bean-type", type = "string"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "method", type = "string"),
                    @YamlProperty(name = "ref", type = "string"),
                    @YamlProperty(name = "scope", type = "enum:Singleton,Request,Prototype")
            }
    )
    public static class BeanDefinitionDeserializer extends YamlDeserializerBase {
        public BeanDefinitionDeserializer() {
            super(BeanDefinition.class);
        }

        @Override
        protected BeanDefinition newInstance() {
            return new BeanDefinition();
        }

        @Override
        protected BeanDefinition newInstance(String value) {
            return new BeanDefinition(value);
        }

        @Override
        protected boolean setProperty(BeanDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "bean-type": {
                    String val = asText(node);
                    target.setBeanType(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "method": {
                    String val = asText(node);
                    target.setMethod(val);
                    break;
                }
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                case "scope": {
                    String val = asText(node);
                    target.setScope(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "bearer-token",
                    "bearerToken"
            },
            types = org.apache.camel.model.rest.BearerTokenDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "format", type = "string"),
                    @YamlProperty(name = "key", type = "string", required = true)
            }
    )
    public static class BearerTokenDefinitionDeserializer extends YamlDeserializerBase {
        public BearerTokenDefinitionDeserializer() {
            super(BearerTokenDefinition.class);
        }

        @Override
        protected BearerTokenDefinition newInstance() {
            return new BearerTokenDefinition();
        }

        @Override
        protected boolean setProperty(BearerTokenDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "description": {
                    String val = asText(node);
                    target.setDescription(val);
                    break;
                }
                case "format": {
                    String val = asText(node);
                    target.setFormat(val);
                    break;
                }
                case "key": {
                    String val = asText(node);
                    target.setKey(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "bindy",
            types = org.apache.camel.model.dataformat.BindyDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-empty-stream", type = "boolean"),
                    @YamlProperty(name = "class-type", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "locale", type = "string"),
                    @YamlProperty(name = "type", type = "enum:Csv,Fixed,KeyValue", required = true),
                    @YamlProperty(name = "unwrap-single-instance", type = "boolean")
            }
    )
    public static class BindyDataFormatDeserializer extends YamlDeserializerBase {
        public BindyDataFormatDeserializer() {
            super(BindyDataFormat.class);
        }

        @Override
        protected BindyDataFormat newInstance() {
            return new BindyDataFormat();
        }

        @Override
        protected boolean setProperty(BindyDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-empty-stream": {
                    String val = asText(node);
                    target.setAllowEmptyStream(val);
                    break;
                }
                case "class-type": {
                    String val = asText(node);
                    target.setClassType(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "locale": {
                    String val = asText(node);
                    target.setLocale(val);
                    break;
                }
                case "type": {
                    String val = asText(node);
                    target.setType(val);
                    break;
                }
                case "unwrap-single-instance": {
                    String val = asText(node);
                    target.setUnwrapSingleInstance(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "blacklist-service-filter",
                    "blacklistServiceFilter"
            },
            types = org.apache.camel.model.cloud.BlacklistServiceCallServiceFilterConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "servers", type = "array:string")
            }
    )
    public static class BlacklistServiceCallServiceFilterConfigurationDeserializer extends YamlDeserializerBase {
        public BlacklistServiceCallServiceFilterConfigurationDeserializer() {
            super(BlacklistServiceCallServiceFilterConfiguration.class);
        }

        @Override
        protected BlacklistServiceCallServiceFilterConfiguration newInstance() {
            return new BlacklistServiceCallServiceFilterConfiguration();
        }

        @Override
        protected boolean setProperty(BlacklistServiceCallServiceFilterConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                case "servers": {
                    java.util.List val = asStringList(node);
                    target.setServers(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "cbor",
            types = org.apache.camel.model.dataformat.CBORDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-jms-type", type = "boolean"),
                    @YamlProperty(name = "allow-unmarshall-type", type = "boolean"),
                    @YamlProperty(name = "collection-type", type = "string"),
                    @YamlProperty(name = "disable-features", type = "string"),
                    @YamlProperty(name = "enable-features", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "object-mapper", type = "string"),
                    @YamlProperty(name = "pretty-print", type = "boolean"),
                    @YamlProperty(name = "unmarshal-type", type = "string"),
                    @YamlProperty(name = "use-default-object-mapper", type = "boolean"),
                    @YamlProperty(name = "use-list", type = "boolean")
            }
    )
    public static class CBORDataFormatDeserializer extends YamlDeserializerBase {
        public CBORDataFormatDeserializer() {
            super(CBORDataFormat.class);
        }

        @Override
        protected CBORDataFormat newInstance() {
            return new CBORDataFormat();
        }

        @Override
        protected boolean setProperty(CBORDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-jms-type": {
                    String val = asText(node);
                    target.setAllowJmsType(val);
                    break;
                }
                case "allow-unmarshall-type": {
                    String val = asText(node);
                    target.setAllowUnmarshallType(val);
                    break;
                }
                case "collection-type": {
                    String val = asText(node);
                    target.setCollectionTypeName(val);
                    break;
                }
                case "disable-features": {
                    String val = asText(node);
                    target.setDisableFeatures(val);
                    break;
                }
                case "enable-features": {
                    String val = asText(node);
                    target.setEnableFeatures(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "object-mapper": {
                    String val = asText(node);
                    target.setObjectMapper(val);
                    break;
                }
                case "pretty-print": {
                    String val = asText(node);
                    target.setPrettyPrint(val);
                    break;
                }
                case "unmarshal-type": {
                    String val = asText(node);
                    target.setUnmarshalTypeName(val);
                    break;
                }
                case "use-default-object-mapper": {
                    String val = asText(node);
                    target.setUseDefaultObjectMapper(val);
                    break;
                }
                case "use-list": {
                    String val = asText(node);
                    target.setUseList(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "csimple",
            inline = true,
            types = org.apache.camel.model.language.CSimpleExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class CSimpleExpressionDeserializer extends YamlDeserializerBase {
        public CSimpleExpressionDeserializer() {
            super(CSimpleExpression.class);
        }

        @Override
        protected CSimpleExpression newInstance() {
            return new CSimpleExpression();
        }

        @Override
        protected CSimpleExpression newInstance(String value) {
            return new CSimpleExpression(value);
        }

        @Override
        protected boolean setProperty(CSimpleExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "caching-service-discovery",
                    "cachingServiceDiscovery"
            },
            types = org.apache.camel.model.cloud.CachingServiceCallServiceDiscoveryConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "combined-service-discovery", type = "object:org.apache.camel.model.cloud.CombinedServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "consul-service-discovery", type = "object:org.apache.camel.model.cloud.ConsulServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "dns-service-discovery", type = "object:org.apache.camel.model.cloud.DnsServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "kubernetes-service-discovery", type = "object:org.apache.camel.model.cloud.KubernetesServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "static-service-discovery", type = "object:org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "timeout", type = "number"),
                    @YamlProperty(name = "units", type = "enum:NANOSECONDS,MICROSECONDS,MILLISECONDS,SECONDS,MINUTES,HOURS,DAYS")
            }
    )
    public static class CachingServiceCallServiceDiscoveryConfigurationDeserializer extends YamlDeserializerBase {
        public CachingServiceCallServiceDiscoveryConfigurationDeserializer() {
            super(CachingServiceCallServiceDiscoveryConfiguration.class);
        }

        @Override
        protected CachingServiceCallServiceDiscoveryConfiguration newInstance() {
            return new CachingServiceCallServiceDiscoveryConfiguration();
        }

        @Override
        protected boolean setProperty(CachingServiceCallServiceDiscoveryConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                case "service-discovery-configuration": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "consul-service-discovery": {
                    org.apache.camel.model.cloud.ConsulServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.ConsulServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "dns-service-discovery": {
                    org.apache.camel.model.cloud.DnsServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.DnsServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "kubernetes-service-discovery": {
                    org.apache.camel.model.cloud.KubernetesServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.KubernetesServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "combined-service-discovery": {
                    org.apache.camel.model.cloud.CombinedServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.CombinedServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "static-service-discovery": {
                    org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "timeout": {
                    String val = asText(node);
                    target.setTimeout(val);
                    break;
                }
                case "units": {
                    String val = asText(node);
                    target.setUnits(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "do-catch",
                    "doCatch"
            },
            types = org.apache.camel.model.CatchDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "exception", type = "array:string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "on-when", type = "object:org.apache.camel.model.WhenDefinition"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class CatchDefinitionDeserializer extends YamlDeserializerBase {
        public CatchDefinitionDeserializer() {
            super(CatchDefinition.class);
        }

        @Override
        protected CatchDefinition newInstance() {
            return new CatchDefinition();
        }

        @Override
        protected boolean setProperty(CatchDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "exception": {
                    java.util.List val = asStringList(node);
                    target.setExceptions(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "on-when": {
                    org.apache.camel.model.WhenDefinition val = asType(node, org.apache.camel.model.WhenDefinition.class);
                    target.setOnWhen(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "choice",
            types = org.apache.camel.model.ChoiceDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "otherwise", type = "object:org.apache.camel.model.OtherwiseDefinition"),
                    @YamlProperty(name = "precondition", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition"),
                    @YamlProperty(name = "when", type = "array:org.apache.camel.model.WhenDefinition")
            }
    )
    public static class ChoiceDefinitionDeserializer extends YamlDeserializerBase {
        public ChoiceDefinitionDeserializer() {
            super(ChoiceDefinition.class);
        }

        @Override
        protected ChoiceDefinition newInstance() {
            return new ChoiceDefinition();
        }

        @Override
        protected boolean setProperty(ChoiceDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "otherwise": {
                    org.apache.camel.model.OtherwiseDefinition val = asType(node, org.apache.camel.model.OtherwiseDefinition.class);
                    target.setOtherwise(val);
                    break;
                }
                case "precondition": {
                    String val = asText(node);
                    target.setPrecondition(val);
                    break;
                }
                case "when": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.WhenDefinition.class);
                    target.setWhenClauses(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "circuit-breaker",
                    "circuitBreaker"
            },
            types = org.apache.camel.model.CircuitBreakerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "configuration", type = "string"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "fault-tolerance-configuration", type = "object:org.apache.camel.model.FaultToleranceConfigurationDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "on-fallback", type = "object:org.apache.camel.model.OnFallbackDefinition"),
                    @YamlProperty(name = "resilience4j-configuration", type = "object:org.apache.camel.model.Resilience4jConfigurationDefinition"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class CircuitBreakerDefinitionDeserializer extends YamlDeserializerBase {
        public CircuitBreakerDefinitionDeserializer() {
            super(CircuitBreakerDefinition.class);
        }

        @Override
        protected CircuitBreakerDefinition newInstance() {
            return new CircuitBreakerDefinition();
        }

        @Override
        protected boolean setProperty(CircuitBreakerDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "configuration": {
                    String val = asText(node);
                    target.setConfiguration(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "fault-tolerance-configuration": {
                    org.apache.camel.model.FaultToleranceConfigurationDefinition val = asType(node, org.apache.camel.model.FaultToleranceConfigurationDefinition.class);
                    target.setFaultToleranceConfiguration(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "on-fallback": {
                    org.apache.camel.model.OnFallbackDefinition val = asType(node, org.apache.camel.model.OnFallbackDefinition.class);
                    target.setOnFallback(val);
                    break;
                }
                case "resilience4j-configuration": {
                    org.apache.camel.model.Resilience4jConfigurationDefinition val = asType(node, org.apache.camel.model.Resilience4jConfigurationDefinition.class);
                    target.setResilience4jConfiguration(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "claim-check",
                    "claimCheck"
            },
            types = org.apache.camel.model.ClaimCheckDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "aggregation-strategy", type = "string"),
                    @YamlProperty(name = "aggregation-strategy-method-name", type = "string"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "filter", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "key", type = "string"),
                    @YamlProperty(name = "operation", type = "enum:Get,GetAndRemove,Set,Push,Pop", required = true)
            }
    )
    public static class ClaimCheckDefinitionDeserializer extends YamlDeserializerBase {
        public ClaimCheckDefinitionDeserializer() {
            super(ClaimCheckDefinition.class);
        }

        @Override
        protected ClaimCheckDefinition newInstance() {
            return new ClaimCheckDefinition();
        }

        @Override
        protected boolean setProperty(ClaimCheckDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "aggregation-strategy": {
                    String val = asText(node);
                    target.setAggregationStrategy(val);
                    break;
                }
                case "aggregation-strategy-method-name": {
                    String val = asText(node);
                    target.setAggregationStrategyMethodName(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "filter": {
                    String val = asText(node);
                    target.setFilter(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "key": {
                    String val = asText(node);
                    target.setKey(val);
                    break;
                }
                case "operation": {
                    String val = asText(node);
                    target.setOperation(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "combined-service-discovery",
                    "combinedServiceDiscovery"
            },
            types = org.apache.camel.model.cloud.CombinedServiceCallServiceDiscoveryConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "caching-service-discovery", type = "object:org.apache.camel.model.cloud.CachingServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "consul-service-discovery", type = "object:org.apache.camel.model.cloud.ConsulServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "dns-service-discovery", type = "object:org.apache.camel.model.cloud.DnsServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "kubernetes-service-discovery", type = "object:org.apache.camel.model.cloud.KubernetesServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "static-service-discovery", type = "object:org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration")
            }
    )
    public static class CombinedServiceCallServiceDiscoveryConfigurationDeserializer extends YamlDeserializerBase {
        public CombinedServiceCallServiceDiscoveryConfigurationDeserializer() {
            super(CombinedServiceCallServiceDiscoveryConfiguration.class);
        }

        @Override
        protected CombinedServiceCallServiceDiscoveryConfiguration newInstance() {
            return new CombinedServiceCallServiceDiscoveryConfiguration();
        }

        @Override
        protected boolean setProperty(CombinedServiceCallServiceDiscoveryConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                case "service-discovery-configurations": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "consul-service-discovery": {
                    org.apache.camel.model.cloud.ConsulServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.ConsulServiceCallServiceDiscoveryConfiguration.class);
                    java.util.List existing = target.getServiceDiscoveryConfigurations();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setServiceDiscoveryConfigurations(existing);
                    break;
                }
                case "dns-service-discovery": {
                    org.apache.camel.model.cloud.DnsServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.DnsServiceCallServiceDiscoveryConfiguration.class);
                    java.util.List existing = target.getServiceDiscoveryConfigurations();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setServiceDiscoveryConfigurations(existing);
                    break;
                }
                case "kubernetes-service-discovery": {
                    org.apache.camel.model.cloud.KubernetesServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.KubernetesServiceCallServiceDiscoveryConfiguration.class);
                    java.util.List existing = target.getServiceDiscoveryConfigurations();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setServiceDiscoveryConfigurations(existing);
                    break;
                }
                case "static-service-discovery": {
                    org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration.class);
                    java.util.List existing = target.getServiceDiscoveryConfigurations();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setServiceDiscoveryConfigurations(existing);
                    break;
                }
                case "caching-service-discovery": {
                    org.apache.camel.model.cloud.CachingServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.CachingServiceCallServiceDiscoveryConfiguration.class);
                    java.util.List existing = target.getServiceDiscoveryConfigurations();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setServiceDiscoveryConfigurations(existing);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "combined-service-filter",
                    "combinedServiceFilter"
            },
            types = org.apache.camel.model.cloud.CombinedServiceCallServiceFilterConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "blacklist-service-filter", type = "object:org.apache.camel.model.cloud.BlacklistServiceCallServiceFilterConfiguration"),
                    @YamlProperty(name = "custom-service-filter", type = "object:org.apache.camel.model.cloud.CustomServiceCallServiceFilterConfiguration"),
                    @YamlProperty(name = "healthy-service-filter", type = "object:org.apache.camel.model.cloud.HealthyServiceCallServiceFilterConfiguration"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "pass-through-service-filter", type = "object:org.apache.camel.model.cloud.PassThroughServiceCallServiceFilterConfiguration"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition")
            }
    )
    public static class CombinedServiceCallServiceFilterConfigurationDeserializer extends YamlDeserializerBase {
        public CombinedServiceCallServiceFilterConfigurationDeserializer() {
            super(CombinedServiceCallServiceFilterConfiguration.class);
        }

        @Override
        protected CombinedServiceCallServiceFilterConfiguration newInstance() {
            return new CombinedServiceCallServiceFilterConfiguration();
        }

        @Override
        protected boolean setProperty(CombinedServiceCallServiceFilterConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                case "service-filter-configurations": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "blacklist-service-filter": {
                    org.apache.camel.model.cloud.BlacklistServiceCallServiceFilterConfiguration val = asType(node, org.apache.camel.model.cloud.BlacklistServiceCallServiceFilterConfiguration.class);
                    java.util.List existing = target.getServiceFilterConfigurations();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setServiceFilterConfigurations(existing);
                    break;
                }
                case "custom-service-filter": {
                    org.apache.camel.model.cloud.CustomServiceCallServiceFilterConfiguration val = asType(node, org.apache.camel.model.cloud.CustomServiceCallServiceFilterConfiguration.class);
                    java.util.List existing = target.getServiceFilterConfigurations();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setServiceFilterConfigurations(existing);
                    break;
                }
                case "healthy-service-filter": {
                    org.apache.camel.model.cloud.HealthyServiceCallServiceFilterConfiguration val = asType(node, org.apache.camel.model.cloud.HealthyServiceCallServiceFilterConfiguration.class);
                    java.util.List existing = target.getServiceFilterConfigurations();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setServiceFilterConfigurations(existing);
                    break;
                }
                case "pass-through-service-filter": {
                    org.apache.camel.model.cloud.PassThroughServiceCallServiceFilterConfiguration val = asType(node, org.apache.camel.model.cloud.PassThroughServiceCallServiceFilterConfiguration.class);
                    java.util.List existing = target.getServiceFilterConfigurations();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setServiceFilterConfigurations(existing);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "constant",
            inline = true,
            types = org.apache.camel.model.language.ConstantExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class ConstantExpressionDeserializer extends YamlDeserializerBase {
        public ConstantExpressionDeserializer() {
            super(ConstantExpression.class);
        }

        @Override
        protected ConstantExpression newInstance() {
            return new ConstantExpression();
        }

        @Override
        protected ConstantExpression newInstance(String value) {
            return new ConstantExpression(value);
        }

        @Override
        protected boolean setProperty(ConstantExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "consul-service-discovery",
                    "consulServiceDiscovery"
            },
            types = org.apache.camel.model.cloud.ConsulServiceCallServiceDiscoveryConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "acl-token", type = "string"),
                    @YamlProperty(name = "block-seconds", type = "number"),
                    @YamlProperty(name = "connect-timeout-millis", type = "number"),
                    @YamlProperty(name = "datacenter", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "password", type = "string"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "read-timeout-millis", type = "number"),
                    @YamlProperty(name = "url", type = "string"),
                    @YamlProperty(name = "user-name", type = "string"),
                    @YamlProperty(name = "write-timeout-millis", type = "number")
            }
    )
    public static class ConsulServiceCallServiceDiscoveryConfigurationDeserializer extends YamlDeserializerBase {
        public ConsulServiceCallServiceDiscoveryConfigurationDeserializer() {
            super(ConsulServiceCallServiceDiscoveryConfiguration.class);
        }

        @Override
        protected ConsulServiceCallServiceDiscoveryConfiguration newInstance() {
            return new ConsulServiceCallServiceDiscoveryConfiguration();
        }

        @Override
        protected boolean setProperty(ConsulServiceCallServiceDiscoveryConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "acl-token": {
                    String val = asText(node);
                    target.setAclToken(val);
                    break;
                }
                case "block-seconds": {
                    String val = asText(node);
                    target.setBlockSeconds(val);
                    break;
                }
                case "connect-timeout-millis": {
                    String val = asText(node);
                    target.setConnectTimeoutMillis(val);
                    break;
                }
                case "datacenter": {
                    String val = asText(node);
                    target.setDatacenter(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "password": {
                    String val = asText(node);
                    target.setPassword(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                case "read-timeout-millis": {
                    String val = asText(node);
                    target.setReadTimeoutMillis(val);
                    break;
                }
                case "url": {
                    String val = asText(node);
                    target.setUrl(val);
                    break;
                }
                case "user-name": {
                    String val = asText(node);
                    target.setUserName(val);
                    break;
                }
                case "write-timeout-millis": {
                    String val = asText(node);
                    target.setWriteTimeoutMillis(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "context-scan",
                    "contextScan"
            },
            types = org.apache.camel.model.ContextScanDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "excludes", type = "array:string"),
                    @YamlProperty(name = "include-non-singletons", type = "boolean"),
                    @YamlProperty(name = "includes", type = "array:string")
            }
    )
    public static class ContextScanDefinitionDeserializer extends YamlDeserializerBase {
        public ContextScanDefinitionDeserializer() {
            super(ContextScanDefinition.class);
        }

        @Override
        protected ContextScanDefinition newInstance() {
            return new ContextScanDefinition();
        }

        @Override
        protected boolean setProperty(ContextScanDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "excludes": {
                    java.util.List val = asStringList(node);
                    target.setExcludes(val);
                    break;
                }
                case "include-non-singletons": {
                    String val = asText(node);
                    target.setIncludeNonSingletons(val);
                    break;
                }
                case "includes": {
                    java.util.List val = asStringList(node);
                    target.setIncludes(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "convert-body-to",
                    "convertBodyTo"
            },
            inline = true,
            types = org.apache.camel.model.ConvertBodyDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "charset", type = "string"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "mandatory", type = "boolean"),
                    @YamlProperty(name = "type", type = "string", required = true)
            }
    )
    public static class ConvertBodyDefinitionDeserializer extends YamlDeserializerBase {
        public ConvertBodyDefinitionDeserializer() {
            super(ConvertBodyDefinition.class);
        }

        @Override
        protected ConvertBodyDefinition newInstance() {
            return new ConvertBodyDefinition();
        }

        @Override
        protected ConvertBodyDefinition newInstance(String value) {
            return new ConvertBodyDefinition(value);
        }

        @Override
        protected boolean setProperty(ConvertBodyDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "charset": {
                    String val = asText(node);
                    target.setCharset(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "mandatory": {
                    String val = asText(node);
                    target.setMandatory(val);
                    break;
                }
                case "type": {
                    String val = asText(node);
                    target.setType(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "crypto",
            types = org.apache.camel.model.dataformat.CryptoDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "algorithm", type = "string"),
                    @YamlProperty(name = "algorithm-parameter-ref", type = "string"),
                    @YamlProperty(name = "buffer-size", type = "number"),
                    @YamlProperty(name = "crypto-provider", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "init-vector-ref", type = "string"),
                    @YamlProperty(name = "inline", type = "boolean"),
                    @YamlProperty(name = "key-ref", type = "string"),
                    @YamlProperty(name = "mac-algorithm", type = "string"),
                    @YamlProperty(name = "should-append-hmac", type = "boolean")
            }
    )
    public static class CryptoDataFormatDeserializer extends YamlDeserializerBase {
        public CryptoDataFormatDeserializer() {
            super(CryptoDataFormat.class);
        }

        @Override
        protected CryptoDataFormat newInstance() {
            return new CryptoDataFormat();
        }

        @Override
        protected boolean setProperty(CryptoDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "algorithm": {
                    String val = asText(node);
                    target.setAlgorithm(val);
                    break;
                }
                case "algorithm-parameter-ref": {
                    String val = asText(node);
                    target.setAlgorithmParameterRef(val);
                    break;
                }
                case "buffer-size": {
                    String val = asText(node);
                    target.setBufferSize(val);
                    break;
                }
                case "crypto-provider": {
                    String val = asText(node);
                    target.setCryptoProvider(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "init-vector-ref": {
                    String val = asText(node);
                    target.setInitVectorRef(val);
                    break;
                }
                case "inline": {
                    String val = asText(node);
                    target.setInline(val);
                    break;
                }
                case "key-ref": {
                    String val = asText(node);
                    target.setKeyRef(val);
                    break;
                }
                case "mac-algorithm": {
                    String val = asText(node);
                    target.setMacAlgorithm(val);
                    break;
                }
                case "should-append-hmac": {
                    String val = asText(node);
                    target.setShouldAppendHMAC(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "csv",
            inline = true,
            types = org.apache.camel.model.dataformat.CsvDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-missing-column-names", type = "boolean"),
                    @YamlProperty(name = "capture-header-record", type = "boolean"),
                    @YamlProperty(name = "comment-marker", type = "string"),
                    @YamlProperty(name = "comment-marker-disabled", type = "boolean"),
                    @YamlProperty(name = "delimiter", type = "string"),
                    @YamlProperty(name = "escape", type = "string"),
                    @YamlProperty(name = "escape-disabled", type = "boolean"),
                    @YamlProperty(name = "format-name", type = "enum:DEFAULT,EXCEL,INFORMIX_UNLOAD,INFORMIX_UNLOAD_CSV,MYSQL,RFC4180"),
                    @YamlProperty(name = "format-ref", type = "string"),
                    @YamlProperty(name = "header", type = "array:string"),
                    @YamlProperty(name = "header-disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ignore-empty-lines", type = "boolean"),
                    @YamlProperty(name = "ignore-header-case", type = "boolean"),
                    @YamlProperty(name = "ignore-surrounding-spaces", type = "boolean"),
                    @YamlProperty(name = "lazy-load", type = "boolean"),
                    @YamlProperty(name = "marshaller-factory-ref", type = "string"),
                    @YamlProperty(name = "null-string", type = "string"),
                    @YamlProperty(name = "null-string-disabled", type = "boolean"),
                    @YamlProperty(name = "quote", type = "string"),
                    @YamlProperty(name = "quote-disabled", type = "boolean"),
                    @YamlProperty(name = "quote-mode", type = "enum:ALL,ALL_NON_NULL,MINIMAL,NON_NUMERIC,NONE"),
                    @YamlProperty(name = "record-converter-ref", type = "string"),
                    @YamlProperty(name = "record-separator", type = "string"),
                    @YamlProperty(name = "record-separator-disabled", type = "string"),
                    @YamlProperty(name = "skip-header-record", type = "boolean"),
                    @YamlProperty(name = "trailing-delimiter", type = "boolean"),
                    @YamlProperty(name = "trim", type = "boolean"),
                    @YamlProperty(name = "use-maps", type = "boolean"),
                    @YamlProperty(name = "use-ordered-maps", type = "boolean")
            }
    )
    public static class CsvDataFormatDeserializer extends YamlDeserializerBase {
        public CsvDataFormatDeserializer() {
            super(CsvDataFormat.class);
        }

        @Override
        protected CsvDataFormat newInstance() {
            return new CsvDataFormat();
        }

        @Override
        protected CsvDataFormat newInstance(String value) {
            return new CsvDataFormat(value);
        }

        @Override
        protected boolean setProperty(CsvDataFormat target, String propertyKey, String propertyName,
                Node node) {
            switch(propertyKey) {
                case "allow-missing-column-names": {
                    String val = asText(node);
                    target.setAllowMissingColumnNames(val);
                    break;
                }
                case "capture-header-record": {
                    String val = asText(node);
                    target.setCaptureHeaderRecord(val);
                    break;
                }
                case "comment-marker": {
                    String val = asText(node);
                    target.setCommentMarker(val);
                    break;
                }
                case "comment-marker-disabled": {
                    String val = asText(node);
                    target.setCommentMarkerDisabled(val);
                    break;
                }
                case "delimiter": {
                    String val = asText(node);
                    target.setDelimiter(val);
                    break;
                }
                case "escape": {
                    String val = asText(node);
                    target.setEscape(val);
                    break;
                }
                case "escape-disabled": {
                    String val = asText(node);
                    target.setEscapeDisabled(val);
                    break;
                }
                case "format-name": {
                    String val = asText(node);
                    target.setFormatName(val);
                    break;
                }
                case "format-ref": {
                    String val = asText(node);
                    target.setFormatRef(val);
                    break;
                }
                case "header": {
                    java.util.List val = asStringList(node);
                    target.setHeader(val);
                    break;
                }
                case "header-disabled": {
                    String val = asText(node);
                    target.setHeaderDisabled(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "ignore-empty-lines": {
                    String val = asText(node);
                    target.setIgnoreEmptyLines(val);
                    break;
                }
                case "ignore-header-case": {
                    String val = asText(node);
                    target.setIgnoreHeaderCase(val);
                    break;
                }
                case "ignore-surrounding-spaces": {
                    String val = asText(node);
                    target.setIgnoreSurroundingSpaces(val);
                    break;
                }
                case "lazy-load": {
                    String val = asText(node);
                    target.setLazyLoad(val);
                    break;
                }
                case "marshaller-factory-ref": {
                    String val = asText(node);
                    target.setMarshallerFactoryRef(val);
                    break;
                }
                case "null-string": {
                    String val = asText(node);
                    target.setNullString(val);
                    break;
                }
                case "null-string-disabled": {
                    String val = asText(node);
                    target.setNullStringDisabled(val);
                    break;
                }
                case "quote": {
                    String val = asText(node);
                    target.setQuote(val);
                    break;
                }
                case "quote-disabled": {
                    String val = asText(node);
                    target.setQuoteDisabled(val);
                    break;
                }
                case "quote-mode": {
                    String val = asText(node);
                    target.setQuoteMode(val);
                    break;
                }
                case "record-converter-ref": {
                    String val = asText(node);
                    target.setRecordConverterRef(val);
                    break;
                }
                case "record-separator": {
                    String val = asText(node);
                    target.setRecordSeparator(val);
                    break;
                }
                case "record-separator-disabled": {
                    String val = asText(node);
                    target.setRecordSeparatorDisabled(val);
                    break;
                }
                case "skip-header-record": {
                    String val = asText(node);
                    target.setSkipHeaderRecord(val);
                    break;
                }
                case "trailing-delimiter": {
                    String val = asText(node);
                    target.setTrailingDelimiter(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                case "use-maps": {
                    String val = asText(node);
                    target.setUseMaps(val);
                    break;
                }
                case "use-ordered-maps": {
                    String val = asText(node);
                    target.setUseOrderedMaps(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "custom",
            inline = true,
            types = org.apache.camel.model.dataformat.CustomDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ref", type = "string", required = true)
            }
    )
    public static class CustomDataFormatDeserializer extends YamlDeserializerBase {
        public CustomDataFormatDeserializer() {
            super(CustomDataFormat.class);
        }

        @Override
        protected CustomDataFormat newInstance() {
            return new CustomDataFormat();
        }

        @Override
        protected CustomDataFormat newInstance(String value) {
            return new CustomDataFormat(value);
        }

        @Override
        protected boolean setProperty(CustomDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "custom-load-balancer",
                    "customLoadBalancer"
            },
            inline = true,
            types = org.apache.camel.model.loadbalancer.CustomLoadBalancerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ref", type = "string", required = true)
            }
    )
    public static class CustomLoadBalancerDefinitionDeserializer extends YamlDeserializerBase {
        public CustomLoadBalancerDefinitionDeserializer() {
            super(CustomLoadBalancerDefinition.class);
        }

        @Override
        protected CustomLoadBalancerDefinition newInstance() {
            return new CustomLoadBalancerDefinition();
        }

        @Override
        protected CustomLoadBalancerDefinition newInstance(String value) {
            return new CustomLoadBalancerDefinition(value);
        }

        @Override
        protected boolean setProperty(CustomLoadBalancerDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "custom-service-filter",
                    "customServiceFilter"
            },
            types = org.apache.camel.model.cloud.CustomServiceCallServiceFilterConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "ref", type = "string")
            }
    )
    public static class CustomServiceCallServiceFilterConfigurationDeserializer extends YamlDeserializerBase {
        public CustomServiceCallServiceFilterConfigurationDeserializer() {
            super(CustomServiceCallServiceFilterConfiguration.class);
        }

        @Override
        protected CustomServiceCallServiceFilterConfiguration newInstance() {
            return new CustomServiceCallServiceFilterConfiguration();
        }

        @Override
        protected boolean setProperty(CustomServiceCallServiceFilterConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                case "ref": {
                    String val = asText(node);
                    target.setServiceFilterRef(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            types = org.apache.camel.model.transformer.CustomTransformerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "class-name", type = "string"),
                    @YamlProperty(name = "from-type", type = "string"),
                    @YamlProperty(name = "ref", type = "string"),
                    @YamlProperty(name = "scheme", type = "string"),
                    @YamlProperty(name = "to-type", type = "string")
            }
    )
    public static class CustomTransformerDefinitionDeserializer extends YamlDeserializerBase {
        public CustomTransformerDefinitionDeserializer() {
            super(CustomTransformerDefinition.class);
        }

        @Override
        protected CustomTransformerDefinition newInstance() {
            return new CustomTransformerDefinition();
        }

        @Override
        protected boolean setProperty(CustomTransformerDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "class-name": {
                    String val = asText(node);
                    target.setClassName(val);
                    break;
                }
                case "from-type": {
                    String val = asText(node);
                    target.setFromType(val);
                    break;
                }
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                case "scheme": {
                    String val = asText(node);
                    target.setScheme(val);
                    break;
                }
                case "to-type": {
                    String val = asText(node);
                    target.setToType(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            types = org.apache.camel.model.validator.CustomValidatorDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "class-name", type = "string"),
                    @YamlProperty(name = "ref", type = "string"),
                    @YamlProperty(name = "type", type = "string")
            }
    )
    public static class CustomValidatorDefinitionDeserializer extends YamlDeserializerBase {
        public CustomValidatorDefinitionDeserializer() {
            super(CustomValidatorDefinition.class);
        }

        @Override
        protected CustomValidatorDefinition newInstance() {
            return new CustomValidatorDefinition();
        }

        @Override
        protected boolean setProperty(CustomValidatorDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "class-name": {
                    String val = asText(node);
                    target.setClassName(val);
                    break;
                }
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                case "type": {
                    String val = asText(node);
                    target.setType(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            types = org.apache.camel.model.DataFormatDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = @YamlProperty(name = "id", type = "string")
    )
    public static class DataFormatDefinitionDeserializer extends YamlDeserializerBase {
        public DataFormatDefinitionDeserializer() {
            super(DataFormatDefinition.class);
        }

        @Override
        protected DataFormatDefinition newInstance() {
            return new DataFormatDefinition();
        }

        @Override
        protected boolean setProperty(DataFormatDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            types = org.apache.camel.model.transformer.DataFormatTransformerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "any23", type = "object:org.apache.camel.model.dataformat.Any23DataFormat"),
                    @YamlProperty(name = "asn1", type = "object:org.apache.camel.model.dataformat.ASN1DataFormat"),
                    @YamlProperty(name = "avro", type = "object:org.apache.camel.model.dataformat.AvroDataFormat"),
                    @YamlProperty(name = "barcode", type = "object:org.apache.camel.model.dataformat.BarcodeDataFormat"),
                    @YamlProperty(name = "base64", type = "object:org.apache.camel.model.dataformat.Base64DataFormat"),
                    @YamlProperty(name = "bindy", type = "object:org.apache.camel.model.dataformat.BindyDataFormat"),
                    @YamlProperty(name = "cbor", type = "object:org.apache.camel.model.dataformat.CBORDataFormat"),
                    @YamlProperty(name = "crypto", type = "object:org.apache.camel.model.dataformat.CryptoDataFormat"),
                    @YamlProperty(name = "csv", type = "object:org.apache.camel.model.dataformat.CsvDataFormat"),
                    @YamlProperty(name = "custom", type = "object:org.apache.camel.model.dataformat.CustomDataFormat"),
                    @YamlProperty(name = "fhir-json", type = "object:org.apache.camel.model.dataformat.FhirJsonDataFormat"),
                    @YamlProperty(name = "fhir-xml", type = "object:org.apache.camel.model.dataformat.FhirXmlDataFormat"),
                    @YamlProperty(name = "flatpack", type = "object:org.apache.camel.model.dataformat.FlatpackDataFormat"),
                    @YamlProperty(name = "from-type", type = "string"),
                    @YamlProperty(name = "grok", type = "object:org.apache.camel.model.dataformat.GrokDataFormat"),
                    @YamlProperty(name = "gzip-deflater", type = "object:org.apache.camel.model.dataformat.GzipDeflaterDataFormat"),
                    @YamlProperty(name = "hl7", type = "object:org.apache.camel.model.dataformat.HL7DataFormat"),
                    @YamlProperty(name = "ical", type = "object:org.apache.camel.model.dataformat.IcalDataFormat"),
                    @YamlProperty(name = "jackson-xml", type = "object:org.apache.camel.model.dataformat.JacksonXMLDataFormat"),
                    @YamlProperty(name = "jaxb", type = "object:org.apache.camel.model.dataformat.JaxbDataFormat"),
                    @YamlProperty(name = "json", type = "object:org.apache.camel.model.dataformat.JsonDataFormat"),
                    @YamlProperty(name = "json-api", type = "object:org.apache.camel.model.dataformat.JsonApiDataFormat"),
                    @YamlProperty(name = "lzf", type = "object:org.apache.camel.model.dataformat.LZFDataFormat"),
                    @YamlProperty(name = "mime-multipart", type = "object:org.apache.camel.model.dataformat.MimeMultipartDataFormat"),
                    @YamlProperty(name = "pgp", type = "object:org.apache.camel.model.dataformat.PGPDataFormat"),
                    @YamlProperty(name = "protobuf", type = "object:org.apache.camel.model.dataformat.ProtobufDataFormat"),
                    @YamlProperty(name = "rss", type = "object:org.apache.camel.model.dataformat.RssDataFormat"),
                    @YamlProperty(name = "scheme", type = "string"),
                    @YamlProperty(name = "soap", type = "object:org.apache.camel.model.dataformat.SoapDataFormat"),
                    @YamlProperty(name = "swift-mt", type = "object:org.apache.camel.model.dataformat.SwiftMtDataFormat"),
                    @YamlProperty(name = "swift-mx", type = "object:org.apache.camel.model.dataformat.SwiftMxDataFormat"),
                    @YamlProperty(name = "syslog", type = "object:org.apache.camel.model.dataformat.SyslogDataFormat"),
                    @YamlProperty(name = "tar-file", type = "object:org.apache.camel.model.dataformat.TarFileDataFormat"),
                    @YamlProperty(name = "thrift", type = "object:org.apache.camel.model.dataformat.ThriftDataFormat"),
                    @YamlProperty(name = "tidy-markup", type = "object:org.apache.camel.model.dataformat.TidyMarkupDataFormat"),
                    @YamlProperty(name = "to-type", type = "string"),
                    @YamlProperty(name = "univocity-csv", type = "object:org.apache.camel.model.dataformat.UniVocityCsvDataFormat"),
                    @YamlProperty(name = "univocity-fixed", type = "object:org.apache.camel.model.dataformat.UniVocityFixedDataFormat"),
                    @YamlProperty(name = "univocity-tsv", type = "object:org.apache.camel.model.dataformat.UniVocityTsvDataFormat"),
                    @YamlProperty(name = "xml-security", type = "object:org.apache.camel.model.dataformat.XMLSecurityDataFormat"),
                    @YamlProperty(name = "xstream", type = "object:org.apache.camel.model.dataformat.XStreamDataFormat"),
                    @YamlProperty(name = "yaml", type = "object:org.apache.camel.model.dataformat.YAMLDataFormat"),
                    @YamlProperty(name = "zip-deflater", type = "object:org.apache.camel.model.dataformat.ZipDeflaterDataFormat"),
                    @YamlProperty(name = "zip-file", type = "object:org.apache.camel.model.dataformat.ZipFileDataFormat")
            }
    )
    public static class DataFormatTransformerDefinitionDeserializer extends YamlDeserializerBase {
        public DataFormatTransformerDefinitionDeserializer() {
            super(DataFormatTransformerDefinition.class);
        }

        @Override
        protected DataFormatTransformerDefinition newInstance() {
            return new DataFormatTransformerDefinition();
        }

        @Override
        protected boolean setProperty(DataFormatTransformerDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "data-format-type": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "any23": {
                    org.apache.camel.model.dataformat.Any23DataFormat val = asType(node, org.apache.camel.model.dataformat.Any23DataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "asn1": {
                    org.apache.camel.model.dataformat.ASN1DataFormat val = asType(node, org.apache.camel.model.dataformat.ASN1DataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "avro": {
                    org.apache.camel.model.dataformat.AvroDataFormat val = asType(node, org.apache.camel.model.dataformat.AvroDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "barcode": {
                    org.apache.camel.model.dataformat.BarcodeDataFormat val = asType(node, org.apache.camel.model.dataformat.BarcodeDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "base64": {
                    org.apache.camel.model.dataformat.Base64DataFormat val = asType(node, org.apache.camel.model.dataformat.Base64DataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "bindy": {
                    org.apache.camel.model.dataformat.BindyDataFormat val = asType(node, org.apache.camel.model.dataformat.BindyDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "cbor": {
                    org.apache.camel.model.dataformat.CBORDataFormat val = asType(node, org.apache.camel.model.dataformat.CBORDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "crypto": {
                    org.apache.camel.model.dataformat.CryptoDataFormat val = asType(node, org.apache.camel.model.dataformat.CryptoDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "csv": {
                    org.apache.camel.model.dataformat.CsvDataFormat val = asType(node, org.apache.camel.model.dataformat.CsvDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "custom": {
                    org.apache.camel.model.dataformat.CustomDataFormat val = asType(node, org.apache.camel.model.dataformat.CustomDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "fhir-json": {
                    org.apache.camel.model.dataformat.FhirJsonDataFormat val = asType(node, org.apache.camel.model.dataformat.FhirJsonDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "fhir-xml": {
                    org.apache.camel.model.dataformat.FhirXmlDataFormat val = asType(node, org.apache.camel.model.dataformat.FhirXmlDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "flatpack": {
                    org.apache.camel.model.dataformat.FlatpackDataFormat val = asType(node, org.apache.camel.model.dataformat.FlatpackDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "grok": {
                    org.apache.camel.model.dataformat.GrokDataFormat val = asType(node, org.apache.camel.model.dataformat.GrokDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "gzip-deflater": {
                    org.apache.camel.model.dataformat.GzipDeflaterDataFormat val = asType(node, org.apache.camel.model.dataformat.GzipDeflaterDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "hl7": {
                    org.apache.camel.model.dataformat.HL7DataFormat val = asType(node, org.apache.camel.model.dataformat.HL7DataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "ical": {
                    org.apache.camel.model.dataformat.IcalDataFormat val = asType(node, org.apache.camel.model.dataformat.IcalDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "jackson-xml": {
                    org.apache.camel.model.dataformat.JacksonXMLDataFormat val = asType(node, org.apache.camel.model.dataformat.JacksonXMLDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "jaxb": {
                    org.apache.camel.model.dataformat.JaxbDataFormat val = asType(node, org.apache.camel.model.dataformat.JaxbDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "json": {
                    org.apache.camel.model.dataformat.JsonDataFormat val = asType(node, org.apache.camel.model.dataformat.JsonDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "json-api": {
                    org.apache.camel.model.dataformat.JsonApiDataFormat val = asType(node, org.apache.camel.model.dataformat.JsonApiDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "lzf": {
                    org.apache.camel.model.dataformat.LZFDataFormat val = asType(node, org.apache.camel.model.dataformat.LZFDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "mime-multipart": {
                    org.apache.camel.model.dataformat.MimeMultipartDataFormat val = asType(node, org.apache.camel.model.dataformat.MimeMultipartDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "protobuf": {
                    org.apache.camel.model.dataformat.ProtobufDataFormat val = asType(node, org.apache.camel.model.dataformat.ProtobufDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "rss": {
                    org.apache.camel.model.dataformat.RssDataFormat val = asType(node, org.apache.camel.model.dataformat.RssDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "soap": {
                    org.apache.camel.model.dataformat.SoapDataFormat val = asType(node, org.apache.camel.model.dataformat.SoapDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "swift-mt": {
                    org.apache.camel.model.dataformat.SwiftMtDataFormat val = asType(node, org.apache.camel.model.dataformat.SwiftMtDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "swift-mx": {
                    org.apache.camel.model.dataformat.SwiftMxDataFormat val = asType(node, org.apache.camel.model.dataformat.SwiftMxDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "syslog": {
                    org.apache.camel.model.dataformat.SyslogDataFormat val = asType(node, org.apache.camel.model.dataformat.SyslogDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "tar-file": {
                    org.apache.camel.model.dataformat.TarFileDataFormat val = asType(node, org.apache.camel.model.dataformat.TarFileDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "thrift": {
                    org.apache.camel.model.dataformat.ThriftDataFormat val = asType(node, org.apache.camel.model.dataformat.ThriftDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "tidy-markup": {
                    org.apache.camel.model.dataformat.TidyMarkupDataFormat val = asType(node, org.apache.camel.model.dataformat.TidyMarkupDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "univocity-csv": {
                    org.apache.camel.model.dataformat.UniVocityCsvDataFormat val = asType(node, org.apache.camel.model.dataformat.UniVocityCsvDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "univocity-fixed": {
                    org.apache.camel.model.dataformat.UniVocityFixedDataFormat val = asType(node, org.apache.camel.model.dataformat.UniVocityFixedDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "univocity-tsv": {
                    org.apache.camel.model.dataformat.UniVocityTsvDataFormat val = asType(node, org.apache.camel.model.dataformat.UniVocityTsvDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "xml-security": {
                    org.apache.camel.model.dataformat.XMLSecurityDataFormat val = asType(node, org.apache.camel.model.dataformat.XMLSecurityDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "xstream": {
                    org.apache.camel.model.dataformat.XStreamDataFormat val = asType(node, org.apache.camel.model.dataformat.XStreamDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "pgp": {
                    org.apache.camel.model.dataformat.PGPDataFormat val = asType(node, org.apache.camel.model.dataformat.PGPDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "yaml": {
                    org.apache.camel.model.dataformat.YAMLDataFormat val = asType(node, org.apache.camel.model.dataformat.YAMLDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "zip-deflater": {
                    org.apache.camel.model.dataformat.ZipDeflaterDataFormat val = asType(node, org.apache.camel.model.dataformat.ZipDeflaterDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "zip-file": {
                    org.apache.camel.model.dataformat.ZipFileDataFormat val = asType(node, org.apache.camel.model.dataformat.ZipFileDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "from-type": {
                    String val = asText(node);
                    target.setFromType(val);
                    break;
                }
                case "scheme": {
                    String val = asText(node);
                    target.setScheme(val);
                    break;
                }
                case "to-type": {
                    String val = asText(node);
                    target.setToType(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "data-formats",
                    "dataFormats"
            },
            types = org.apache.camel.model.dataformat.DataFormatsDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "any23", type = "object:org.apache.camel.model.dataformat.Any23DataFormat"),
                    @YamlProperty(name = "asn1", type = "object:org.apache.camel.model.dataformat.ASN1DataFormat"),
                    @YamlProperty(name = "avro", type = "object:org.apache.camel.model.dataformat.AvroDataFormat"),
                    @YamlProperty(name = "barcode", type = "object:org.apache.camel.model.dataformat.BarcodeDataFormat"),
                    @YamlProperty(name = "base64", type = "object:org.apache.camel.model.dataformat.Base64DataFormat"),
                    @YamlProperty(name = "bindy", type = "object:org.apache.camel.model.dataformat.BindyDataFormat"),
                    @YamlProperty(name = "cbor", type = "object:org.apache.camel.model.dataformat.CBORDataFormat"),
                    @YamlProperty(name = "crypto", type = "object:org.apache.camel.model.dataformat.CryptoDataFormat"),
                    @YamlProperty(name = "csv", type = "object:org.apache.camel.model.dataformat.CsvDataFormat"),
                    @YamlProperty(name = "custom", type = "object:org.apache.camel.model.dataformat.CustomDataFormat"),
                    @YamlProperty(name = "fhir-json", type = "object:org.apache.camel.model.dataformat.FhirJsonDataFormat"),
                    @YamlProperty(name = "fhir-xml", type = "object:org.apache.camel.model.dataformat.FhirXmlDataFormat"),
                    @YamlProperty(name = "flatpack", type = "object:org.apache.camel.model.dataformat.FlatpackDataFormat"),
                    @YamlProperty(name = "grok", type = "object:org.apache.camel.model.dataformat.GrokDataFormat"),
                    @YamlProperty(name = "gzip-deflater", type = "object:org.apache.camel.model.dataformat.GzipDeflaterDataFormat"),
                    @YamlProperty(name = "hl7", type = "object:org.apache.camel.model.dataformat.HL7DataFormat"),
                    @YamlProperty(name = "ical", type = "object:org.apache.camel.model.dataformat.IcalDataFormat"),
                    @YamlProperty(name = "jackson-xml", type = "object:org.apache.camel.model.dataformat.JacksonXMLDataFormat"),
                    @YamlProperty(name = "jaxb", type = "object:org.apache.camel.model.dataformat.JaxbDataFormat"),
                    @YamlProperty(name = "json", type = "object:org.apache.camel.model.dataformat.JsonDataFormat"),
                    @YamlProperty(name = "json-api", type = "object:org.apache.camel.model.dataformat.JsonApiDataFormat"),
                    @YamlProperty(name = "lzf", type = "object:org.apache.camel.model.dataformat.LZFDataFormat"),
                    @YamlProperty(name = "mime-multipart", type = "object:org.apache.camel.model.dataformat.MimeMultipartDataFormat"),
                    @YamlProperty(name = "pgp", type = "object:org.apache.camel.model.dataformat.PGPDataFormat"),
                    @YamlProperty(name = "protobuf", type = "object:org.apache.camel.model.dataformat.ProtobufDataFormat"),
                    @YamlProperty(name = "rss", type = "object:org.apache.camel.model.dataformat.RssDataFormat"),
                    @YamlProperty(name = "soap", type = "object:org.apache.camel.model.dataformat.SoapDataFormat"),
                    @YamlProperty(name = "swift-mt", type = "object:org.apache.camel.model.dataformat.SwiftMtDataFormat"),
                    @YamlProperty(name = "swift-mx", type = "object:org.apache.camel.model.dataformat.SwiftMxDataFormat"),
                    @YamlProperty(name = "syslog", type = "object:org.apache.camel.model.dataformat.SyslogDataFormat"),
                    @YamlProperty(name = "tar-file", type = "object:org.apache.camel.model.dataformat.TarFileDataFormat"),
                    @YamlProperty(name = "thrift", type = "object:org.apache.camel.model.dataformat.ThriftDataFormat"),
                    @YamlProperty(name = "tidy-markup", type = "object:org.apache.camel.model.dataformat.TidyMarkupDataFormat"),
                    @YamlProperty(name = "univocity-csv", type = "object:org.apache.camel.model.dataformat.UniVocityCsvDataFormat"),
                    @YamlProperty(name = "univocity-fixed", type = "object:org.apache.camel.model.dataformat.UniVocityFixedDataFormat"),
                    @YamlProperty(name = "univocity-tsv", type = "object:org.apache.camel.model.dataformat.UniVocityTsvDataFormat"),
                    @YamlProperty(name = "xml-security", type = "object:org.apache.camel.model.dataformat.XMLSecurityDataFormat"),
                    @YamlProperty(name = "xstream", type = "object:org.apache.camel.model.dataformat.XStreamDataFormat"),
                    @YamlProperty(name = "yaml", type = "object:org.apache.camel.model.dataformat.YAMLDataFormat"),
                    @YamlProperty(name = "zip-deflater", type = "object:org.apache.camel.model.dataformat.ZipDeflaterDataFormat"),
                    @YamlProperty(name = "zip-file", type = "object:org.apache.camel.model.dataformat.ZipFileDataFormat")
            }
    )
    public static class DataFormatsDefinitionDeserializer extends YamlDeserializerBase {
        public DataFormatsDefinitionDeserializer() {
            super(DataFormatsDefinition.class);
        }

        @Override
        protected DataFormatsDefinition newInstance() {
            return new DataFormatsDefinition();
        }

        @Override
        protected boolean setProperty(DataFormatsDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "data-formats": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "any23": {
                    org.apache.camel.model.dataformat.Any23DataFormat val = asType(node, org.apache.camel.model.dataformat.Any23DataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "asn1": {
                    org.apache.camel.model.dataformat.ASN1DataFormat val = asType(node, org.apache.camel.model.dataformat.ASN1DataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "avro": {
                    org.apache.camel.model.dataformat.AvroDataFormat val = asType(node, org.apache.camel.model.dataformat.AvroDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "barcode": {
                    org.apache.camel.model.dataformat.BarcodeDataFormat val = asType(node, org.apache.camel.model.dataformat.BarcodeDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "base64": {
                    org.apache.camel.model.dataformat.Base64DataFormat val = asType(node, org.apache.camel.model.dataformat.Base64DataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "bindy": {
                    org.apache.camel.model.dataformat.BindyDataFormat val = asType(node, org.apache.camel.model.dataformat.BindyDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "cbor": {
                    org.apache.camel.model.dataformat.CBORDataFormat val = asType(node, org.apache.camel.model.dataformat.CBORDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "crypto": {
                    org.apache.camel.model.dataformat.CryptoDataFormat val = asType(node, org.apache.camel.model.dataformat.CryptoDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "csv": {
                    org.apache.camel.model.dataformat.CsvDataFormat val = asType(node, org.apache.camel.model.dataformat.CsvDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "custom": {
                    org.apache.camel.model.dataformat.CustomDataFormat val = asType(node, org.apache.camel.model.dataformat.CustomDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "fhir-json": {
                    org.apache.camel.model.dataformat.FhirJsonDataFormat val = asType(node, org.apache.camel.model.dataformat.FhirJsonDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "fhir-xml": {
                    org.apache.camel.model.dataformat.FhirXmlDataFormat val = asType(node, org.apache.camel.model.dataformat.FhirXmlDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "flatpack": {
                    org.apache.camel.model.dataformat.FlatpackDataFormat val = asType(node, org.apache.camel.model.dataformat.FlatpackDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "grok": {
                    org.apache.camel.model.dataformat.GrokDataFormat val = asType(node, org.apache.camel.model.dataformat.GrokDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "gzip-deflater": {
                    org.apache.camel.model.dataformat.GzipDeflaterDataFormat val = asType(node, org.apache.camel.model.dataformat.GzipDeflaterDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "hl7": {
                    org.apache.camel.model.dataformat.HL7DataFormat val = asType(node, org.apache.camel.model.dataformat.HL7DataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "ical": {
                    org.apache.camel.model.dataformat.IcalDataFormat val = asType(node, org.apache.camel.model.dataformat.IcalDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "jackson-xml": {
                    org.apache.camel.model.dataformat.JacksonXMLDataFormat val = asType(node, org.apache.camel.model.dataformat.JacksonXMLDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "jaxb": {
                    org.apache.camel.model.dataformat.JaxbDataFormat val = asType(node, org.apache.camel.model.dataformat.JaxbDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "json": {
                    org.apache.camel.model.dataformat.JsonDataFormat val = asType(node, org.apache.camel.model.dataformat.JsonDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "json-api": {
                    org.apache.camel.model.dataformat.JsonApiDataFormat val = asType(node, org.apache.camel.model.dataformat.JsonApiDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "lzf": {
                    org.apache.camel.model.dataformat.LZFDataFormat val = asType(node, org.apache.camel.model.dataformat.LZFDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "mime-multipart": {
                    org.apache.camel.model.dataformat.MimeMultipartDataFormat val = asType(node, org.apache.camel.model.dataformat.MimeMultipartDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "protobuf": {
                    org.apache.camel.model.dataformat.ProtobufDataFormat val = asType(node, org.apache.camel.model.dataformat.ProtobufDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "rss": {
                    org.apache.camel.model.dataformat.RssDataFormat val = asType(node, org.apache.camel.model.dataformat.RssDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "soap": {
                    org.apache.camel.model.dataformat.SoapDataFormat val = asType(node, org.apache.camel.model.dataformat.SoapDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "swift-mt": {
                    org.apache.camel.model.dataformat.SwiftMtDataFormat val = asType(node, org.apache.camel.model.dataformat.SwiftMtDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "swift-mx": {
                    org.apache.camel.model.dataformat.SwiftMxDataFormat val = asType(node, org.apache.camel.model.dataformat.SwiftMxDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "syslog": {
                    org.apache.camel.model.dataformat.SyslogDataFormat val = asType(node, org.apache.camel.model.dataformat.SyslogDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "tar-file": {
                    org.apache.camel.model.dataformat.TarFileDataFormat val = asType(node, org.apache.camel.model.dataformat.TarFileDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "thrift": {
                    org.apache.camel.model.dataformat.ThriftDataFormat val = asType(node, org.apache.camel.model.dataformat.ThriftDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "tidy-markup": {
                    org.apache.camel.model.dataformat.TidyMarkupDataFormat val = asType(node, org.apache.camel.model.dataformat.TidyMarkupDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "univocity-csv": {
                    org.apache.camel.model.dataformat.UniVocityCsvDataFormat val = asType(node, org.apache.camel.model.dataformat.UniVocityCsvDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "univocity-fixed": {
                    org.apache.camel.model.dataformat.UniVocityFixedDataFormat val = asType(node, org.apache.camel.model.dataformat.UniVocityFixedDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "univocity-tsv": {
                    org.apache.camel.model.dataformat.UniVocityTsvDataFormat val = asType(node, org.apache.camel.model.dataformat.UniVocityTsvDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "xml-security": {
                    org.apache.camel.model.dataformat.XMLSecurityDataFormat val = asType(node, org.apache.camel.model.dataformat.XMLSecurityDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "xstream": {
                    org.apache.camel.model.dataformat.XStreamDataFormat val = asType(node, org.apache.camel.model.dataformat.XStreamDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "pgp": {
                    org.apache.camel.model.dataformat.PGPDataFormat val = asType(node, org.apache.camel.model.dataformat.PGPDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "yaml": {
                    org.apache.camel.model.dataformat.YAMLDataFormat val = asType(node, org.apache.camel.model.dataformat.YAMLDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "zip-deflater": {
                    org.apache.camel.model.dataformat.ZipDeflaterDataFormat val = asType(node, org.apache.camel.model.dataformat.ZipDeflaterDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                case "zip-file": {
                    org.apache.camel.model.dataformat.ZipFileDataFormat val = asType(node, org.apache.camel.model.dataformat.ZipFileDataFormat.class);
                    java.util.List existing = target.getDataFormats();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setDataFormats(existing);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "datasonnet",
            inline = true,
            types = org.apache.camel.model.language.DatasonnetExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "body-media-type", type = "string"),
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "output-media-type", type = "string"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class DatasonnetExpressionDeserializer extends YamlDeserializerBase {
        public DatasonnetExpressionDeserializer() {
            super(DatasonnetExpression.class);
        }

        @Override
        protected DatasonnetExpression newInstance() {
            return new DatasonnetExpression();
        }

        @Override
        protected DatasonnetExpression newInstance(String value) {
            return new DatasonnetExpression(value);
        }

        @Override
        protected boolean setProperty(DatasonnetExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "body-media-type": {
                    String val = asText(node);
                    target.setBodyMediaType(val);
                    break;
                }
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "output-media-type": {
                    String val = asText(node);
                    target.setOutputMediaType(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "dead-letter-channel",
                    "deadLetterChannel"
            },
            types = org.apache.camel.model.errorhandler.DeadLetterChannelDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "dead-letter-handle-new-exception", type = "boolean"),
                    @YamlProperty(name = "dead-letter-uri", type = "string", required = true),
                    @YamlProperty(name = "executor-service-ref", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "level", type = "enum:TRACE,DEBUG,INFO,WARN,ERROR,OFF"),
                    @YamlProperty(name = "log-name", type = "string"),
                    @YamlProperty(name = "logger-ref", type = "string"),
                    @YamlProperty(name = "on-exception-occurred-ref", type = "string"),
                    @YamlProperty(name = "on-prepare-failure-ref", type = "string"),
                    @YamlProperty(name = "on-redelivery-ref", type = "string"),
                    @YamlProperty(name = "redelivery-policy", type = "object:org.apache.camel.model.RedeliveryPolicyDefinition"),
                    @YamlProperty(name = "redelivery-policy-ref", type = "string"),
                    @YamlProperty(name = "retry-while-ref", type = "string"),
                    @YamlProperty(name = "use-original-body", type = "boolean"),
                    @YamlProperty(name = "use-original-message", type = "boolean")
            }
    )
    public static class DeadLetterChannelDefinitionDeserializer extends YamlDeserializerBase {
        public DeadLetterChannelDefinitionDeserializer() {
            super(DeadLetterChannelDefinition.class);
        }

        @Override
        protected DeadLetterChannelDefinition newInstance() {
            return new DeadLetterChannelDefinition();
        }

        @Override
        protected boolean setProperty(DeadLetterChannelDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "dead-letter-handle-new-exception": {
                    String val = asText(node);
                    target.setDeadLetterHandleNewException(val);
                    break;
                }
                case "dead-letter-uri": {
                    String val = asText(node);
                    target.setDeadLetterUri(val);
                    break;
                }
                case "executor-service-ref": {
                    String val = asText(node);
                    target.setExecutorServiceRef(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "level": {
                    String val = asText(node);
                    target.setLevel(val);
                    break;
                }
                case "log-name": {
                    String val = asText(node);
                    target.setLogName(val);
                    break;
                }
                case "logger-ref": {
                    String val = asText(node);
                    target.setLoggerRef(val);
                    break;
                }
                case "on-exception-occurred-ref": {
                    String val = asText(node);
                    target.setOnExceptionOccurredRef(val);
                    break;
                }
                case "on-prepare-failure-ref": {
                    String val = asText(node);
                    target.setOnPrepareFailureRef(val);
                    break;
                }
                case "on-redelivery-ref": {
                    String val = asText(node);
                    target.setOnRedeliveryRef(val);
                    break;
                }
                case "redelivery-policy": {
                    org.apache.camel.model.RedeliveryPolicyDefinition val = asType(node, org.apache.camel.model.RedeliveryPolicyDefinition.class);
                    target.setRedeliveryPolicy(val);
                    break;
                }
                case "redelivery-policy-ref": {
                    String val = asText(node);
                    target.setRedeliveryPolicyRef(val);
                    break;
                }
                case "retry-while-ref": {
                    String val = asText(node);
                    target.setRetryWhileRef(val);
                    break;
                }
                case "use-original-body": {
                    String val = asText(node);
                    target.setUseOriginalBody(val);
                    break;
                }
                case "use-original-message": {
                    String val = asText(node);
                    target.setUseOriginalMessage(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "default-error-handler",
                    "defaultErrorHandler"
            },
            types = org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "executor-service-ref", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "level", type = "enum:TRACE,DEBUG,INFO,WARN,ERROR,OFF"),
                    @YamlProperty(name = "log-name", type = "string"),
                    @YamlProperty(name = "logger-ref", type = "string"),
                    @YamlProperty(name = "on-exception-occurred-ref", type = "string"),
                    @YamlProperty(name = "on-prepare-failure-ref", type = "string"),
                    @YamlProperty(name = "on-redelivery-ref", type = "string"),
                    @YamlProperty(name = "redelivery-policy", type = "object:org.apache.camel.model.RedeliveryPolicyDefinition"),
                    @YamlProperty(name = "redelivery-policy-ref", type = "string"),
                    @YamlProperty(name = "retry-while-ref", type = "string"),
                    @YamlProperty(name = "use-original-body", type = "boolean"),
                    @YamlProperty(name = "use-original-message", type = "boolean")
            }
    )
    public static class DefaultErrorHandlerDefinitionDeserializer extends YamlDeserializerBase {
        public DefaultErrorHandlerDefinitionDeserializer() {
            super(DefaultErrorHandlerDefinition.class);
        }

        @Override
        protected DefaultErrorHandlerDefinition newInstance() {
            return new DefaultErrorHandlerDefinition();
        }

        @Override
        protected boolean setProperty(DefaultErrorHandlerDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "executor-service-ref": {
                    String val = asText(node);
                    target.setExecutorServiceRef(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "level": {
                    String val = asText(node);
                    target.setLevel(val);
                    break;
                }
                case "log-name": {
                    String val = asText(node);
                    target.setLogName(val);
                    break;
                }
                case "logger-ref": {
                    String val = asText(node);
                    target.setLoggerRef(val);
                    break;
                }
                case "on-exception-occurred-ref": {
                    String val = asText(node);
                    target.setOnExceptionOccurredRef(val);
                    break;
                }
                case "on-prepare-failure-ref": {
                    String val = asText(node);
                    target.setOnPrepareFailureRef(val);
                    break;
                }
                case "on-redelivery-ref": {
                    String val = asText(node);
                    target.setOnRedeliveryRef(val);
                    break;
                }
                case "redelivery-policy": {
                    org.apache.camel.model.RedeliveryPolicyDefinition val = asType(node, org.apache.camel.model.RedeliveryPolicyDefinition.class);
                    target.setRedeliveryPolicy(val);
                    break;
                }
                case "redelivery-policy-ref": {
                    String val = asText(node);
                    target.setRedeliveryPolicyRef(val);
                    break;
                }
                case "retry-while-ref": {
                    String val = asText(node);
                    target.setRetryWhileRef(val);
                    break;
                }
                case "use-original-body": {
                    String val = asText(node);
                    target.setUseOriginalBody(val);
                    break;
                }
                case "use-original-message": {
                    String val = asText(node);
                    target.setUseOriginalMessage(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "default-load-balancer",
                    "defaultLoadBalancer"
            },
            types = org.apache.camel.model.cloud.DefaultServiceCallServiceLoadBalancerConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition")
            }
    )
    public static class DefaultServiceCallServiceLoadBalancerConfigurationDeserializer extends YamlDeserializerBase {
        public DefaultServiceCallServiceLoadBalancerConfigurationDeserializer() {
            super(DefaultServiceCallServiceLoadBalancerConfiguration.class);
        }

        @Override
        protected DefaultServiceCallServiceLoadBalancerConfiguration newInstance() {
            return new DefaultServiceCallServiceLoadBalancerConfiguration();
        }

        @Override
        protected boolean setProperty(DefaultServiceCallServiceLoadBalancerConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "delay",
            types = org.apache.camel.model.DelayDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "async-delayed", type = "boolean"),
                    @YamlProperty(name = "caller-runs-when-rejected", type = "boolean"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "executor-service", type = "string"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean")
            }
    )
    public static class DelayDefinitionDeserializer extends YamlDeserializerBase {
        public DelayDefinitionDeserializer() {
            super(DelayDefinition.class);
        }

        @Override
        protected DelayDefinition newInstance() {
            return new DelayDefinition();
        }

        @Override
        protected boolean setProperty(DelayDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "async-delayed": {
                    String val = asText(node);
                    target.setAsyncDelayed(val);
                    break;
                }
                case "caller-runs-when-rejected": {
                    String val = asText(node);
                    target.setCallerRunsWhenRejected(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "executor-service": {
                    String val = asText(node);
                    target.setExecutorService(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "delete",
            types = org.apache.camel.model.rest.DeleteDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "api-docs", type = "boolean"),
                    @YamlProperty(name = "binding-mode", type = "enum:off,auto,json,xml,json_xml"),
                    @YamlProperty(name = "client-request-validation", type = "boolean"),
                    @YamlProperty(name = "consumes", type = "string"),
                    @YamlProperty(name = "deprecated", type = "boolean"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "enable-cors", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "out-type", type = "string"),
                    @YamlProperty(name = "param", type = "array:org.apache.camel.model.rest.ParamDefinition"),
                    @YamlProperty(name = "path", type = "string"),
                    @YamlProperty(name = "produces", type = "string"),
                    @YamlProperty(name = "response-message", type = "array:org.apache.camel.model.rest.ResponseMessageDefinition"),
                    @YamlProperty(name = "route-id", type = "string"),
                    @YamlProperty(name = "security", type = "array:org.apache.camel.model.rest.SecurityDefinition"),
                    @YamlProperty(name = "skip-binding-on-error-code", type = "boolean"),
                    @YamlProperty(name = "to", type = "object:org.apache.camel.model.ToDefinition"),
                    @YamlProperty(name = "type", type = "string")
            }
    )
    public static class DeleteDefinitionDeserializer extends YamlDeserializerBase {
        public DeleteDefinitionDeserializer() {
            super(DeleteDefinition.class);
        }

        @Override
        protected DeleteDefinition newInstance() {
            return new DeleteDefinition();
        }

        @Override
        protected boolean setProperty(DeleteDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "api-docs": {
                    String val = asText(node);
                    target.setApiDocs(val);
                    break;
                }
                case "binding-mode": {
                    String val = asText(node);
                    target.setBindingMode(val);
                    break;
                }
                case "client-request-validation": {
                    String val = asText(node);
                    target.setClientRequestValidation(val);
                    break;
                }
                case "consumes": {
                    String val = asText(node);
                    target.setConsumes(val);
                    break;
                }
                case "deprecated": {
                    String val = asText(node);
                    target.setDeprecated(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "enable-cors": {
                    String val = asText(node);
                    target.setEnableCORS(val);
                    break;
                }
                case "out-type": {
                    String val = asText(node);
                    target.setOutType(val);
                    break;
                }
                case "param": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.ParamDefinition.class);
                    target.setParams(val);
                    break;
                }
                case "path": {
                    String val = asText(node);
                    target.setPath(val);
                    break;
                }
                case "produces": {
                    String val = asText(node);
                    target.setProduces(val);
                    break;
                }
                case "response-message": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.ResponseMessageDefinition.class);
                    target.setResponseMsgs(val);
                    break;
                }
                case "route-id": {
                    String val = asText(node);
                    target.setRouteId(val);
                    break;
                }
                case "security": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.SecurityDefinition.class);
                    target.setSecurity(val);
                    break;
                }
                case "skip-binding-on-error-code": {
                    String val = asText(node);
                    target.setSkipBindingOnErrorCode(val);
                    break;
                }
                case "to": {
                    org.apache.camel.model.ToDefinition val = asType(node, org.apache.camel.model.ToDefinition.class);
                    target.setTo(val);
                    break;
                }
                case "type": {
                    String val = asText(node);
                    target.setType(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "description",
            inline = true,
            types = org.apache.camel.model.DescriptionDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "lang", type = "string", deprecated = true),
                    @YamlProperty(name = "text", type = "string")
            }
    )
    public static class DescriptionDefinitionDeserializer extends YamlDeserializerBase {
        public DescriptionDefinitionDeserializer() {
            super(DescriptionDefinition.class);
        }

        @Override
        protected DescriptionDefinition newInstance() {
            return new DescriptionDefinition();
        }

        @Override
        protected DescriptionDefinition newInstance(String value) {
            return new DescriptionDefinition(value);
        }

        @Override
        protected boolean setProperty(DescriptionDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "lang": {
                    String val = asText(node);
                    target.setLang(val);
                    break;
                }
                case "text": {
                    String val = asText(node);
                    target.setText(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "dns-service-discovery",
                    "dnsServiceDiscovery"
            },
            types = org.apache.camel.model.cloud.DnsServiceCallServiceDiscoveryConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "domain", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "proto", type = "string")
            }
    )
    public static class DnsServiceCallServiceDiscoveryConfigurationDeserializer extends YamlDeserializerBase {
        public DnsServiceCallServiceDiscoveryConfigurationDeserializer() {
            super(DnsServiceCallServiceDiscoveryConfiguration.class);
        }

        @Override
        protected DnsServiceCallServiceDiscoveryConfiguration newInstance() {
            return new DnsServiceCallServiceDiscoveryConfiguration();
        }

        @Override
        protected boolean setProperty(DnsServiceCallServiceDiscoveryConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "domain": {
                    String val = asText(node);
                    target.setDomain(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                case "proto": {
                    String val = asText(node);
                    target.setProto(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "dynamic-router",
                    "dynamicRouter"
            },
            types = org.apache.camel.model.DynamicRouterDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "cache-size", type = "number"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ignore-invalid-endpoints", type = "boolean"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "uri-delimiter", type = "string")
            }
    )
    public static class DynamicRouterDefinitionDeserializer extends YamlDeserializerBase {
        public DynamicRouterDefinitionDeserializer() {
            super(DynamicRouterDefinition.class);
        }

        @Override
        protected DynamicRouterDefinition newInstance() {
            return new DynamicRouterDefinition();
        }

        @Override
        protected boolean setProperty(DynamicRouterDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "cache-size": {
                    String val = asText(node);
                    target.setCacheSize(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "ignore-invalid-endpoints": {
                    String val = asText(node);
                    target.setIgnoreInvalidEndpoints(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "uri-delimiter": {
                    String val = asText(node);
                    target.setUriDelimiter(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            types = org.apache.camel.model.transformer.EndpointTransformerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "from-type", type = "string"),
                    @YamlProperty(name = "ref", type = "string"),
                    @YamlProperty(name = "scheme", type = "string"),
                    @YamlProperty(name = "to-type", type = "string"),
                    @YamlProperty(name = "uri", type = "string")
            }
    )
    public static class EndpointTransformerDefinitionDeserializer extends YamlDeserializerBase {
        public EndpointTransformerDefinitionDeserializer() {
            super(EndpointTransformerDefinition.class);
        }

        @Override
        protected EndpointTransformerDefinition newInstance() {
            return new EndpointTransformerDefinition();
        }

        @Override
        protected boolean setProperty(EndpointTransformerDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "from-type": {
                    String val = asText(node);
                    target.setFromType(val);
                    break;
                }
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                case "scheme": {
                    String val = asText(node);
                    target.setScheme(val);
                    break;
                }
                case "to-type": {
                    String val = asText(node);
                    target.setToType(val);
                    break;
                }
                case "uri": {
                    String val = asText(node);
                    target.setUri(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            types = org.apache.camel.model.validator.EndpointValidatorDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "ref", type = "string"),
                    @YamlProperty(name = "type", type = "string"),
                    @YamlProperty(name = "uri", type = "string")
            }
    )
    public static class EndpointValidatorDefinitionDeserializer extends YamlDeserializerBase {
        public EndpointValidatorDefinitionDeserializer() {
            super(EndpointValidatorDefinition.class);
        }

        @Override
        protected EndpointValidatorDefinition newInstance() {
            return new EndpointValidatorDefinition();
        }

        @Override
        protected boolean setProperty(EndpointValidatorDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                case "type": {
                    String val = asText(node);
                    target.setType(val);
                    break;
                }
                case "uri": {
                    String val = asText(node);
                    target.setUri(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "enrich",
            types = org.apache.camel.model.EnrichDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "aggregate-on-exception", type = "boolean"),
                    @YamlProperty(name = "aggregation-strategy", type = "string"),
                    @YamlProperty(name = "aggregation-strategy-method-allow-null", type = "string"),
                    @YamlProperty(name = "aggregation-strategy-method-name", type = "string"),
                    @YamlProperty(name = "allow-optimised-components", type = "boolean"),
                    @YamlProperty(name = "cache-size", type = "number"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ignore-invalid-endpoint", type = "boolean"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "share-unit-of-work", type = "boolean")
            }
    )
    public static class EnrichDefinitionDeserializer extends YamlDeserializerBase {
        public EnrichDefinitionDeserializer() {
            super(EnrichDefinition.class);
        }

        @Override
        protected EnrichDefinition newInstance() {
            return new EnrichDefinition();
        }

        @Override
        protected boolean setProperty(EnrichDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "aggregate-on-exception": {
                    String val = asText(node);
                    target.setAggregateOnException(val);
                    break;
                }
                case "aggregation-strategy": {
                    String val = asText(node);
                    target.setAggregationStrategy(val);
                    break;
                }
                case "aggregation-strategy-method-allow-null": {
                    String val = asText(node);
                    target.setAggregationStrategyMethodAllowNull(val);
                    break;
                }
                case "aggregation-strategy-method-name": {
                    String val = asText(node);
                    target.setAggregationStrategyMethodName(val);
                    break;
                }
                case "allow-optimised-components": {
                    String val = asText(node);
                    target.setAllowOptimisedComponents(val);
                    break;
                }
                case "cache-size": {
                    String val = asText(node);
                    target.setCacheSize(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "ignore-invalid-endpoint": {
                    String val = asText(node);
                    target.setIgnoreInvalidEndpoint(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "share-unit-of-work": {
                    String val = asText(node);
                    target.setShareUnitOfWork(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "error-handler",
                    "errorHandler"
            },
            types = org.apache.camel.model.ErrorHandlerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "dead-letter-channel", type = "object:org.apache.camel.model.errorhandler.DeadLetterChannelDefinition"),
                    @YamlProperty(name = "default-error-handler", type = "object:org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "jta-transaction-error-handler", type = "object:org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition"),
                    @YamlProperty(name = "no-error-handler", type = "object:org.apache.camel.model.errorhandler.NoErrorHandlerDefinition"),
                    @YamlProperty(name = "spring-transaction-error-handler", type = "object:org.apache.camel.model.errorhandler.SpringTransactionErrorHandlerDefinition")
            }
    )
    public static class ErrorHandlerDefinitionDeserializer extends YamlDeserializerBase {
        public ErrorHandlerDefinitionDeserializer() {
            super(ErrorHandlerDefinition.class);
        }

        @Override
        protected ErrorHandlerDefinition newInstance() {
            return new ErrorHandlerDefinition();
        }

        @Override
        protected boolean setProperty(ErrorHandlerDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "error-handler-type": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "dead-letter-channel": {
                    org.apache.camel.model.errorhandler.DeadLetterChannelDefinition val = asType(node, org.apache.camel.model.errorhandler.DeadLetterChannelDefinition.class);
                    target.setErrorHandlerType(val);
                    break;
                }
                case "default-error-handler": {
                    org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition val = asType(node, org.apache.camel.model.errorhandler.DefaultErrorHandlerDefinition.class);
                    target.setErrorHandlerType(val);
                    break;
                }
                case "no-error-handler": {
                    org.apache.camel.model.errorhandler.NoErrorHandlerDefinition val = asType(node, org.apache.camel.model.errorhandler.NoErrorHandlerDefinition.class);
                    target.setErrorHandlerType(val);
                    break;
                }
                case "jta-transaction-error-handler": {
                    org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition val = asType(node, org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition.class);
                    target.setErrorHandlerType(val);
                    break;
                }
                case "spring-transaction-error-handler": {
                    org.apache.camel.model.errorhandler.SpringTransactionErrorHandlerDefinition val = asType(node, org.apache.camel.model.errorhandler.SpringTransactionErrorHandlerDefinition.class);
                    target.setErrorHandlerType(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "exchange-property",
                    "exchangeProperty"
            },
            inline = true,
            types = org.apache.camel.model.language.ExchangePropertyExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class ExchangePropertyExpressionDeserializer extends YamlDeserializerBase {
        public ExchangePropertyExpressionDeserializer() {
            super(ExchangePropertyExpression.class);
        }

        @Override
        protected ExchangePropertyExpression newInstance() {
            return new ExchangePropertyExpression();
        }

        @Override
        protected ExchangePropertyExpression newInstance(String value) {
            return new ExchangePropertyExpression(value);
        }

        @Override
        protected boolean setProperty(ExchangePropertyExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "failover",
            types = org.apache.camel.model.loadbalancer.FailoverLoadBalancerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "exception", type = "array:string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "maximum-failover-attempts", type = "string"),
                    @YamlProperty(name = "round-robin", type = "string"),
                    @YamlProperty(name = "sticky", type = "string")
            }
    )
    public static class FailoverLoadBalancerDefinitionDeserializer extends YamlDeserializerBase {
        public FailoverLoadBalancerDefinitionDeserializer() {
            super(FailoverLoadBalancerDefinition.class);
        }

        @Override
        protected FailoverLoadBalancerDefinition newInstance() {
            return new FailoverLoadBalancerDefinition();
        }

        @Override
        protected boolean setProperty(FailoverLoadBalancerDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "exception": {
                    java.util.List val = asStringList(node);
                    target.setExceptions(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "maximum-failover-attempts": {
                    String val = asText(node);
                    target.setMaximumFailoverAttempts(val);
                    break;
                }
                case "round-robin": {
                    String val = asText(node);
                    target.setRoundRobin(val);
                    break;
                }
                case "sticky": {
                    String val = asText(node);
                    target.setSticky(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "fault-tolerance-configuration",
                    "faultToleranceConfiguration"
            },
            types = org.apache.camel.model.FaultToleranceConfigurationDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "bulkhead-enabled", type = "boolean"),
                    @YamlProperty(name = "bulkhead-executor-service", type = "string"),
                    @YamlProperty(name = "bulkhead-max-concurrent-calls", type = "number"),
                    @YamlProperty(name = "bulkhead-waiting-task-queue", type = "number"),
                    @YamlProperty(name = "circuit-breaker", type = "string"),
                    @YamlProperty(name = "delay", type = "string"),
                    @YamlProperty(name = "failure-ratio", type = "number"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "request-volume-threshold", type = "number"),
                    @YamlProperty(name = "success-threshold", type = "number"),
                    @YamlProperty(name = "timeout-duration", type = "string"),
                    @YamlProperty(name = "timeout-enabled", type = "boolean"),
                    @YamlProperty(name = "timeout-pool-size", type = "number"),
                    @YamlProperty(name = "timeout-scheduled-executor-service", type = "string")
            }
    )
    public static class FaultToleranceConfigurationDefinitionDeserializer extends YamlDeserializerBase {
        public FaultToleranceConfigurationDefinitionDeserializer() {
            super(FaultToleranceConfigurationDefinition.class);
        }

        @Override
        protected FaultToleranceConfigurationDefinition newInstance() {
            return new FaultToleranceConfigurationDefinition();
        }

        @Override
        protected boolean setProperty(FaultToleranceConfigurationDefinition target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "bulkhead-enabled": {
                    String val = asText(node);
                    target.setBulkheadEnabled(val);
                    break;
                }
                case "bulkhead-executor-service": {
                    String val = asText(node);
                    target.setBulkheadExecutorService(val);
                    break;
                }
                case "bulkhead-max-concurrent-calls": {
                    String val = asText(node);
                    target.setBulkheadMaxConcurrentCalls(val);
                    break;
                }
                case "bulkhead-waiting-task-queue": {
                    String val = asText(node);
                    target.setBulkheadWaitingTaskQueue(val);
                    break;
                }
                case "circuit-breaker": {
                    String val = asText(node);
                    target.setCircuitBreaker(val);
                    break;
                }
                case "delay": {
                    String val = asText(node);
                    target.setDelay(val);
                    break;
                }
                case "failure-ratio": {
                    String val = asText(node);
                    target.setFailureRatio(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "request-volume-threshold": {
                    String val = asText(node);
                    target.setRequestVolumeThreshold(val);
                    break;
                }
                case "success-threshold": {
                    String val = asText(node);
                    target.setSuccessThreshold(val);
                    break;
                }
                case "timeout-duration": {
                    String val = asText(node);
                    target.setTimeoutDuration(val);
                    break;
                }
                case "timeout-enabled": {
                    String val = asText(node);
                    target.setTimeoutEnabled(val);
                    break;
                }
                case "timeout-pool-size": {
                    String val = asText(node);
                    target.setTimeoutPoolSize(val);
                    break;
                }
                case "timeout-scheduled-executor-service": {
                    String val = asText(node);
                    target.setTimeoutScheduledExecutorService(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "fhir-json",
                    "fhirJson"
            },
            types = org.apache.camel.model.dataformat.FhirJsonDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "content-type-header", type = "boolean"),
                    @YamlProperty(name = "dont-encode-elements", type = "string"),
                    @YamlProperty(name = "dont-strip-versions-from-references-at-paths", type = "string"),
                    @YamlProperty(name = "encode-elements", type = "string"),
                    @YamlProperty(name = "encode-elements-applies-to-child-resources-only", type = "boolean"),
                    @YamlProperty(name = "fhir-context", type = "string"),
                    @YamlProperty(name = "fhir-version", type = "enum:DSTU2,DSTU2_HL7ORG,DSTU2_1,DSTU3,R4,R5"),
                    @YamlProperty(name = "force-resource-id", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "omit-resource-id", type = "boolean"),
                    @YamlProperty(name = "override-resource-id-with-bundle-entry-full-url", type = "boolean"),
                    @YamlProperty(name = "parser-error-handler", type = "string"),
                    @YamlProperty(name = "parser-options", type = "string"),
                    @YamlProperty(name = "prefer-types", type = "string"),
                    @YamlProperty(name = "pretty-print", type = "boolean"),
                    @YamlProperty(name = "server-base-url", type = "string"),
                    @YamlProperty(name = "strip-versions-from-references", type = "boolean"),
                    @YamlProperty(name = "summary-mode", type = "boolean"),
                    @YamlProperty(name = "suppress-narratives", type = "boolean")
            }
    )
    public static class FhirJsonDataFormatDeserializer extends YamlDeserializerBase {
        public FhirJsonDataFormatDeserializer() {
            super(FhirJsonDataFormat.class);
        }

        @Override
        protected FhirJsonDataFormat newInstance() {
            return new FhirJsonDataFormat();
        }

        @Override
        protected boolean setProperty(FhirJsonDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "content-type-header": {
                    String val = asText(node);
                    target.setContentTypeHeader(val);
                    break;
                }
                case "dont-encode-elements": {
                    String val = asText(node);
                    target.setDontEncodeElements(val);
                    break;
                }
                case "dont-strip-versions-from-references-at-paths": {
                    String val = asText(node);
                    target.setDontStripVersionsFromReferencesAtPaths(val);
                    break;
                }
                case "encode-elements": {
                    String val = asText(node);
                    target.setEncodeElements(val);
                    break;
                }
                case "encode-elements-applies-to-child-resources-only": {
                    String val = asText(node);
                    target.setEncodeElementsAppliesToChildResourcesOnly(val);
                    break;
                }
                case "fhir-context": {
                    String val = asText(node);
                    target.setFhirContext(val);
                    break;
                }
                case "fhir-version": {
                    String val = asText(node);
                    target.setFhirVersion(val);
                    break;
                }
                case "force-resource-id": {
                    String val = asText(node);
                    target.setForceResourceId(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "omit-resource-id": {
                    String val = asText(node);
                    target.setOmitResourceId(val);
                    break;
                }
                case "override-resource-id-with-bundle-entry-full-url": {
                    String val = asText(node);
                    target.setOverrideResourceIdWithBundleEntryFullUrl(val);
                    break;
                }
                case "parser-error-handler": {
                    String val = asText(node);
                    target.setParserErrorHandler(val);
                    break;
                }
                case "parser-options": {
                    String val = asText(node);
                    target.setParserOptions(val);
                    break;
                }
                case "prefer-types": {
                    String val = asText(node);
                    target.setPreferTypes(val);
                    break;
                }
                case "pretty-print": {
                    String val = asText(node);
                    target.setPrettyPrint(val);
                    break;
                }
                case "server-base-url": {
                    String val = asText(node);
                    target.setServerBaseUrl(val);
                    break;
                }
                case "strip-versions-from-references": {
                    String val = asText(node);
                    target.setStripVersionsFromReferences(val);
                    break;
                }
                case "summary-mode": {
                    String val = asText(node);
                    target.setSummaryMode(val);
                    break;
                }
                case "suppress-narratives": {
                    String val = asText(node);
                    target.setSuppressNarratives(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "fhir-xml",
                    "fhirXml"
            },
            types = org.apache.camel.model.dataformat.FhirXmlDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "content-type-header", type = "boolean"),
                    @YamlProperty(name = "dont-encode-elements", type = "string"),
                    @YamlProperty(name = "dont-strip-versions-from-references-at-paths", type = "string"),
                    @YamlProperty(name = "encode-elements", type = "string"),
                    @YamlProperty(name = "encode-elements-applies-to-child-resources-only", type = "boolean"),
                    @YamlProperty(name = "fhir-context", type = "string"),
                    @YamlProperty(name = "fhir-version", type = "enum:DSTU2,DSTU2_HL7ORG,DSTU2_1,DSTU3,R4,R5"),
                    @YamlProperty(name = "force-resource-id", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "omit-resource-id", type = "boolean"),
                    @YamlProperty(name = "override-resource-id-with-bundle-entry-full-url", type = "boolean"),
                    @YamlProperty(name = "parser-error-handler", type = "string"),
                    @YamlProperty(name = "parser-options", type = "string"),
                    @YamlProperty(name = "prefer-types", type = "string"),
                    @YamlProperty(name = "pretty-print", type = "boolean"),
                    @YamlProperty(name = "server-base-url", type = "string"),
                    @YamlProperty(name = "strip-versions-from-references", type = "boolean"),
                    @YamlProperty(name = "summary-mode", type = "boolean"),
                    @YamlProperty(name = "suppress-narratives", type = "boolean")
            }
    )
    public static class FhirXmlDataFormatDeserializer extends YamlDeserializerBase {
        public FhirXmlDataFormatDeserializer() {
            super(FhirXmlDataFormat.class);
        }

        @Override
        protected FhirXmlDataFormat newInstance() {
            return new FhirXmlDataFormat();
        }

        @Override
        protected boolean setProperty(FhirXmlDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "content-type-header": {
                    String val = asText(node);
                    target.setContentTypeHeader(val);
                    break;
                }
                case "dont-encode-elements": {
                    String val = asText(node);
                    target.setDontEncodeElements(val);
                    break;
                }
                case "dont-strip-versions-from-references-at-paths": {
                    String val = asText(node);
                    target.setDontStripVersionsFromReferencesAtPaths(val);
                    break;
                }
                case "encode-elements": {
                    String val = asText(node);
                    target.setEncodeElements(val);
                    break;
                }
                case "encode-elements-applies-to-child-resources-only": {
                    String val = asText(node);
                    target.setEncodeElementsAppliesToChildResourcesOnly(val);
                    break;
                }
                case "fhir-context": {
                    String val = asText(node);
                    target.setFhirContext(val);
                    break;
                }
                case "fhir-version": {
                    String val = asText(node);
                    target.setFhirVersion(val);
                    break;
                }
                case "force-resource-id": {
                    String val = asText(node);
                    target.setForceResourceId(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "omit-resource-id": {
                    String val = asText(node);
                    target.setOmitResourceId(val);
                    break;
                }
                case "override-resource-id-with-bundle-entry-full-url": {
                    String val = asText(node);
                    target.setOverrideResourceIdWithBundleEntryFullUrl(val);
                    break;
                }
                case "parser-error-handler": {
                    String val = asText(node);
                    target.setParserErrorHandler(val);
                    break;
                }
                case "parser-options": {
                    String val = asText(node);
                    target.setParserOptions(val);
                    break;
                }
                case "prefer-types": {
                    String val = asText(node);
                    target.setPreferTypes(val);
                    break;
                }
                case "pretty-print": {
                    String val = asText(node);
                    target.setPrettyPrint(val);
                    break;
                }
                case "server-base-url": {
                    String val = asText(node);
                    target.setServerBaseUrl(val);
                    break;
                }
                case "strip-versions-from-references": {
                    String val = asText(node);
                    target.setStripVersionsFromReferences(val);
                    break;
                }
                case "summary-mode": {
                    String val = asText(node);
                    target.setSummaryMode(val);
                    break;
                }
                case "suppress-narratives": {
                    String val = asText(node);
                    target.setSuppressNarratives(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "filter",
            types = org.apache.camel.model.FilterDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "status-property-name", type = "string"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class FilterDefinitionDeserializer extends YamlDeserializerBase {
        public FilterDefinitionDeserializer() {
            super(FilterDefinition.class);
        }

        @Override
        protected FilterDefinition newInstance() {
            return new FilterDefinition();
        }

        @Override
        protected boolean setProperty(FilterDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "status-property-name": {
                    String val = asText(node);
                    target.setStatusPropertyName(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "do-finally",
                    "doFinally"
            },
            types = org.apache.camel.model.FinallyDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class FinallyDefinitionDeserializer extends YamlDeserializerBase {
        public FinallyDefinitionDeserializer() {
            super(FinallyDefinition.class);
        }

        @Override
        protected FinallyDefinition newInstance() {
            return new FinallyDefinition();
        }

        @Override
        protected boolean setProperty(FinallyDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "flatpack",
            types = org.apache.camel.model.dataformat.FlatpackDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-short-lines", type = "boolean"),
                    @YamlProperty(name = "definition", type = "string"),
                    @YamlProperty(name = "delimiter", type = "string"),
                    @YamlProperty(name = "fixed", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ignore-extra-columns", type = "boolean"),
                    @YamlProperty(name = "ignore-first-record", type = "boolean"),
                    @YamlProperty(name = "parser-factory-ref", type = "string"),
                    @YamlProperty(name = "text-qualifier", type = "string")
            }
    )
    public static class FlatpackDataFormatDeserializer extends YamlDeserializerBase {
        public FlatpackDataFormatDeserializer() {
            super(FlatpackDataFormat.class);
        }

        @Override
        protected FlatpackDataFormat newInstance() {
            return new FlatpackDataFormat();
        }

        @Override
        protected boolean setProperty(FlatpackDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-short-lines": {
                    String val = asText(node);
                    target.setAllowShortLines(val);
                    break;
                }
                case "definition": {
                    String val = asText(node);
                    target.setDefinition(val);
                    break;
                }
                case "delimiter": {
                    String val = asText(node);
                    target.setDelimiter(val);
                    break;
                }
                case "fixed": {
                    String val = asText(node);
                    target.setFixed(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "ignore-extra-columns": {
                    String val = asText(node);
                    target.setIgnoreExtraColumns(val);
                    break;
                }
                case "ignore-first-record": {
                    String val = asText(node);
                    target.setIgnoreFirstRecord(val);
                    break;
                }
                case "parser-factory-ref": {
                    String val = asText(node);
                    target.setParserFactoryRef(val);
                    break;
                }
                case "text-qualifier": {
                    String val = asText(node);
                    target.setTextQualifier(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "get",
            types = org.apache.camel.model.rest.GetDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "api-docs", type = "boolean"),
                    @YamlProperty(name = "binding-mode", type = "enum:off,auto,json,xml,json_xml"),
                    @YamlProperty(name = "client-request-validation", type = "boolean"),
                    @YamlProperty(name = "consumes", type = "string"),
                    @YamlProperty(name = "deprecated", type = "boolean"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "enable-cors", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "out-type", type = "string"),
                    @YamlProperty(name = "param", type = "array:org.apache.camel.model.rest.ParamDefinition"),
                    @YamlProperty(name = "path", type = "string"),
                    @YamlProperty(name = "produces", type = "string"),
                    @YamlProperty(name = "response-message", type = "array:org.apache.camel.model.rest.ResponseMessageDefinition"),
                    @YamlProperty(name = "route-id", type = "string"),
                    @YamlProperty(name = "security", type = "array:org.apache.camel.model.rest.SecurityDefinition"),
                    @YamlProperty(name = "skip-binding-on-error-code", type = "boolean"),
                    @YamlProperty(name = "to", type = "object:org.apache.camel.model.ToDefinition"),
                    @YamlProperty(name = "type", type = "string")
            }
    )
    public static class GetDefinitionDeserializer extends YamlDeserializerBase {
        public GetDefinitionDeserializer() {
            super(GetDefinition.class);
        }

        @Override
        protected GetDefinition newInstance() {
            return new GetDefinition();
        }

        @Override
        protected boolean setProperty(GetDefinition target, String propertyKey, String propertyName,
                Node node) {
            switch(propertyKey) {
                case "api-docs": {
                    String val = asText(node);
                    target.setApiDocs(val);
                    break;
                }
                case "binding-mode": {
                    String val = asText(node);
                    target.setBindingMode(val);
                    break;
                }
                case "client-request-validation": {
                    String val = asText(node);
                    target.setClientRequestValidation(val);
                    break;
                }
                case "consumes": {
                    String val = asText(node);
                    target.setConsumes(val);
                    break;
                }
                case "deprecated": {
                    String val = asText(node);
                    target.setDeprecated(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "enable-cors": {
                    String val = asText(node);
                    target.setEnableCORS(val);
                    break;
                }
                case "out-type": {
                    String val = asText(node);
                    target.setOutType(val);
                    break;
                }
                case "param": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.ParamDefinition.class);
                    target.setParams(val);
                    break;
                }
                case "path": {
                    String val = asText(node);
                    target.setPath(val);
                    break;
                }
                case "produces": {
                    String val = asText(node);
                    target.setProduces(val);
                    break;
                }
                case "response-message": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.ResponseMessageDefinition.class);
                    target.setResponseMsgs(val);
                    break;
                }
                case "route-id": {
                    String val = asText(node);
                    target.setRouteId(val);
                    break;
                }
                case "security": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.SecurityDefinition.class);
                    target.setSecurity(val);
                    break;
                }
                case "skip-binding-on-error-code": {
                    String val = asText(node);
                    target.setSkipBindingOnErrorCode(val);
                    break;
                }
                case "to": {
                    org.apache.camel.model.ToDefinition val = asType(node, org.apache.camel.model.ToDefinition.class);
                    target.setTo(val);
                    break;
                }
                case "type": {
                    String val = asText(node);
                    target.setType(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "global-option",
                    "globalOption"
            },
            types = org.apache.camel.model.GlobalOptionDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "key", type = "string", required = true),
                    @YamlProperty(name = "value", type = "string", required = true)
            }
    )
    public static class GlobalOptionDefinitionDeserializer extends YamlDeserializerBase {
        public GlobalOptionDefinitionDeserializer() {
            super(GlobalOptionDefinition.class);
        }

        @Override
        protected GlobalOptionDefinition newInstance() {
            return new GlobalOptionDefinition();
        }

        @Override
        protected boolean setProperty(GlobalOptionDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "key": {
                    String val = asText(node);
                    target.setKey(val);
                    break;
                }
                case "value": {
                    String val = asText(node);
                    target.setValue(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "global-options",
                    "globalOptions"
            },
            types = org.apache.camel.model.GlobalOptionsDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = @YamlProperty(name = "global-option", type = "array:org.apache.camel.model.GlobalOptionDefinition")
    )
    public static class GlobalOptionsDefinitionDeserializer extends YamlDeserializerBase {
        public GlobalOptionsDefinitionDeserializer() {
            super(GlobalOptionsDefinition.class);
        }

        @Override
        protected GlobalOptionsDefinition newInstance() {
            return new GlobalOptionsDefinition();
        }

        @Override
        protected boolean setProperty(GlobalOptionsDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "global-option": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.GlobalOptionDefinition.class);
                    target.setGlobalOptions(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "grok",
            types = org.apache.camel.model.dataformat.GrokDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-multiple-matches-per-line", type = "boolean"),
                    @YamlProperty(name = "flattened", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "named-only", type = "boolean"),
                    @YamlProperty(name = "pattern", type = "string", required = true)
            }
    )
    public static class GrokDataFormatDeserializer extends YamlDeserializerBase {
        public GrokDataFormatDeserializer() {
            super(GrokDataFormat.class);
        }

        @Override
        protected GrokDataFormat newInstance() {
            return new GrokDataFormat();
        }

        @Override
        protected boolean setProperty(GrokDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-multiple-matches-per-line": {
                    String val = asText(node);
                    target.setAllowMultipleMatchesPerLine(val);
                    break;
                }
                case "flattened": {
                    String val = asText(node);
                    target.setFlattened(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "named-only": {
                    String val = asText(node);
                    target.setNamedOnly(val);
                    break;
                }
                case "pattern": {
                    String val = asText(node);
                    target.setPattern(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "groovy",
            inline = true,
            types = org.apache.camel.model.language.GroovyExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class GroovyExpressionDeserializer extends YamlDeserializerBase {
        public GroovyExpressionDeserializer() {
            super(GroovyExpression.class);
        }

        @Override
        protected GroovyExpression newInstance() {
            return new GroovyExpression();
        }

        @Override
        protected GroovyExpression newInstance(String value) {
            return new GroovyExpression(value);
        }

        @Override
        protected boolean setProperty(GroovyExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "gzip-deflater",
                    "gzipDeflater"
            },
            types = org.apache.camel.model.dataformat.GzipDeflaterDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = @YamlProperty(name = "id", type = "string")
    )
    public static class GzipDeflaterDataFormatDeserializer extends YamlDeserializerBase {
        public GzipDeflaterDataFormatDeserializer() {
            super(GzipDeflaterDataFormat.class);
        }

        @Override
        protected GzipDeflaterDataFormat newInstance() {
            return new GzipDeflaterDataFormat();
        }

        @Override
        protected boolean setProperty(GzipDeflaterDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "hl7",
            types = org.apache.camel.model.dataformat.HL7DataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "validate", type = "boolean")
            }
    )
    public static class HL7DataFormatDeserializer extends YamlDeserializerBase {
        public HL7DataFormatDeserializer() {
            super(HL7DataFormat.class);
        }

        @Override
        protected HL7DataFormat newInstance() {
            return new HL7DataFormat();
        }

        @Override
        protected boolean setProperty(HL7DataFormat target, String propertyKey, String propertyName,
                Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "validate": {
                    String val = asText(node);
                    target.setValidate(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "head",
            types = org.apache.camel.model.rest.HeadDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "api-docs", type = "boolean"),
                    @YamlProperty(name = "binding-mode", type = "enum:off,auto,json,xml,json_xml"),
                    @YamlProperty(name = "client-request-validation", type = "boolean"),
                    @YamlProperty(name = "consumes", type = "string"),
                    @YamlProperty(name = "deprecated", type = "boolean"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "enable-cors", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "out-type", type = "string"),
                    @YamlProperty(name = "param", type = "array:org.apache.camel.model.rest.ParamDefinition"),
                    @YamlProperty(name = "path", type = "string"),
                    @YamlProperty(name = "produces", type = "string"),
                    @YamlProperty(name = "response-message", type = "array:org.apache.camel.model.rest.ResponseMessageDefinition"),
                    @YamlProperty(name = "route-id", type = "string"),
                    @YamlProperty(name = "security", type = "array:org.apache.camel.model.rest.SecurityDefinition"),
                    @YamlProperty(name = "skip-binding-on-error-code", type = "boolean"),
                    @YamlProperty(name = "to", type = "object:org.apache.camel.model.ToDefinition"),
                    @YamlProperty(name = "type", type = "string")
            }
    )
    public static class HeadDefinitionDeserializer extends YamlDeserializerBase {
        public HeadDefinitionDeserializer() {
            super(HeadDefinition.class);
        }

        @Override
        protected HeadDefinition newInstance() {
            return new HeadDefinition();
        }

        @Override
        protected boolean setProperty(HeadDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "api-docs": {
                    String val = asText(node);
                    target.setApiDocs(val);
                    break;
                }
                case "binding-mode": {
                    String val = asText(node);
                    target.setBindingMode(val);
                    break;
                }
                case "client-request-validation": {
                    String val = asText(node);
                    target.setClientRequestValidation(val);
                    break;
                }
                case "consumes": {
                    String val = asText(node);
                    target.setConsumes(val);
                    break;
                }
                case "deprecated": {
                    String val = asText(node);
                    target.setDeprecated(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "enable-cors": {
                    String val = asText(node);
                    target.setEnableCORS(val);
                    break;
                }
                case "out-type": {
                    String val = asText(node);
                    target.setOutType(val);
                    break;
                }
                case "param": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.ParamDefinition.class);
                    target.setParams(val);
                    break;
                }
                case "path": {
                    String val = asText(node);
                    target.setPath(val);
                    break;
                }
                case "produces": {
                    String val = asText(node);
                    target.setProduces(val);
                    break;
                }
                case "response-message": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.ResponseMessageDefinition.class);
                    target.setResponseMsgs(val);
                    break;
                }
                case "route-id": {
                    String val = asText(node);
                    target.setRouteId(val);
                    break;
                }
                case "security": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.SecurityDefinition.class);
                    target.setSecurity(val);
                    break;
                }
                case "skip-binding-on-error-code": {
                    String val = asText(node);
                    target.setSkipBindingOnErrorCode(val);
                    break;
                }
                case "to": {
                    org.apache.camel.model.ToDefinition val = asType(node, org.apache.camel.model.ToDefinition.class);
                    target.setTo(val);
                    break;
                }
                case "type": {
                    String val = asText(node);
                    target.setType(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "header",
            inline = true,
            types = org.apache.camel.model.language.HeaderExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class HeaderExpressionDeserializer extends YamlDeserializerBase {
        public HeaderExpressionDeserializer() {
            super(HeaderExpression.class);
        }

        @Override
        protected HeaderExpression newInstance() {
            return new HeaderExpression();
        }

        @Override
        protected HeaderExpression newInstance(String value) {
            return new HeaderExpression(value);
        }

        @Override
        protected boolean setProperty(HeaderExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "healthy-service-filter",
                    "healthyServiceFilter"
            },
            types = org.apache.camel.model.cloud.HealthyServiceCallServiceFilterConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition")
            }
    )
    public static class HealthyServiceCallServiceFilterConfigurationDeserializer extends YamlDeserializerBase {
        public HealthyServiceCallServiceFilterConfigurationDeserializer() {
            super(HealthyServiceCallServiceFilterConfiguration.class);
        }

        @Override
        protected HealthyServiceCallServiceFilterConfiguration newInstance() {
            return new HealthyServiceCallServiceFilterConfiguration();
        }

        @Override
        protected boolean setProperty(HealthyServiceCallServiceFilterConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "hl7terser",
            inline = true,
            types = org.apache.camel.model.language.Hl7TerserExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "header-name", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "property-name", type = "string"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class Hl7TerserExpressionDeserializer extends YamlDeserializerBase {
        public Hl7TerserExpressionDeserializer() {
            super(Hl7TerserExpression.class);
        }

        @Override
        protected Hl7TerserExpression newInstance() {
            return new Hl7TerserExpression();
        }

        @Override
        protected Hl7TerserExpression newInstance(String value) {
            return new Hl7TerserExpression(value);
        }

        @Override
        protected boolean setProperty(Hl7TerserExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "header-name": {
                    String val = asText(node);
                    target.setHeaderName(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "property-name": {
                    String val = asText(node);
                    target.setPropertyName(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "ical",
            types = org.apache.camel.model.dataformat.IcalDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "validating", type = "boolean")
            }
    )
    public static class IcalDataFormatDeserializer extends YamlDeserializerBase {
        public IcalDataFormatDeserializer() {
            super(IcalDataFormat.class);
        }

        @Override
        protected IcalDataFormat newInstance() {
            return new IcalDataFormat();
        }

        @Override
        protected boolean setProperty(IcalDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "validating": {
                    String val = asText(node);
                    target.setValidating(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "idempotent-consumer",
                    "idempotentConsumer"
            },
            types = org.apache.camel.model.IdempotentConsumerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "completion-eager", type = "boolean"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "eager", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "idempotent-repository", type = "string", required = true),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "remove-on-failure", type = "boolean"),
                    @YamlProperty(name = "skip-duplicate", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class IdempotentConsumerDefinitionDeserializer extends YamlDeserializerBase {
        public IdempotentConsumerDefinitionDeserializer() {
            super(IdempotentConsumerDefinition.class);
        }

        @Override
        protected IdempotentConsumerDefinition newInstance() {
            return new IdempotentConsumerDefinition();
        }

        @Override
        protected boolean setProperty(IdempotentConsumerDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "completion-eager": {
                    String val = asText(node);
                    target.setCompletionEager(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "eager": {
                    String val = asText(node);
                    target.setEager(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "idempotent-repository": {
                    String val = asText(node);
                    target.setIdempotentRepository(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "remove-on-failure": {
                    String val = asText(node);
                    target.setRemoveOnFailure(val);
                    break;
                }
                case "skip-duplicate": {
                    String val = asText(node);
                    target.setSkipDuplicate(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "in-only",
                    "inOnly"
            },
            inline = true,
            types = org.apache.camel.model.InOnlyDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "parameters", type = "object"),
                    @YamlProperty(name = "uri", type = "string", required = true)
            }
    )
    public static class InOnlyDefinitionDeserializer extends YamlDeserializerEndpointAwareBase {
        public InOnlyDefinitionDeserializer() {
            super(InOnlyDefinition.class);
        }

        @Override
        protected InOnlyDefinition newInstance() {
            return new InOnlyDefinition();
        }

        @Override
        protected InOnlyDefinition newInstance(String value) {
            return new InOnlyDefinition(value);
        }

        @Override
        protected void setEndpointUri(CamelContext camelContext, Node node, InOnlyDefinition target,
                Map parameters) {
            target.setUri(org.apache.camel.dsl.yaml.common.YamlSupport.createEndpointUri(camelContext, node, target.getUri(), parameters));
        }

        @Override
        protected boolean setProperty(InOnlyDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "uri": {
                    String val = asText(node);
                    target.setUri(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "in-out",
                    "inOut"
            },
            inline = true,
            types = org.apache.camel.model.InOutDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "parameters", type = "object"),
                    @YamlProperty(name = "uri", type = "string", required = true)
            }
    )
    public static class InOutDefinitionDeserializer extends YamlDeserializerEndpointAwareBase {
        public InOutDefinitionDeserializer() {
            super(InOutDefinition.class);
        }

        @Override
        protected InOutDefinition newInstance() {
            return new InOutDefinition();
        }

        @Override
        protected InOutDefinition newInstance(String value) {
            return new InOutDefinition(value);
        }

        @Override
        protected void setEndpointUri(CamelContext camelContext, Node node, InOutDefinition target,
                Map parameters) {
            target.setUri(org.apache.camel.dsl.yaml.common.YamlSupport.createEndpointUri(camelContext, node, target.getUri(), parameters));
        }

        @Override
        protected boolean setProperty(InOutDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "uri": {
                    String val = asText(node);
                    target.setUri(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "input-type",
                    "inputType"
            },
            types = org.apache.camel.model.InputTypeDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "urn", type = "string", required = true),
                    @YamlProperty(name = "validate", type = "boolean")
            }
    )
    public static class InputTypeDefinitionDeserializer extends YamlDeserializerBase {
        public InputTypeDefinitionDeserializer() {
            super(InputTypeDefinition.class);
        }

        @Override
        protected InputTypeDefinition newInstance() {
            return new InputTypeDefinition();
        }

        @Override
        protected boolean setProperty(InputTypeDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "urn": {
                    String val = asText(node);
                    target.setUrn(val);
                    break;
                }
                case "validate": {
                    String val = asText(node);
                    target.setValidate(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "intercept",
            types = org.apache.camel.model.InterceptDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class InterceptDefinitionDeserializer extends YamlDeserializerBase {
        public InterceptDefinitionDeserializer() {
            super(InterceptDefinition.class);
        }

        @Override
        protected InterceptDefinition newInstance() {
            return new InterceptDefinition();
        }

        @Override
        protected boolean setProperty(InterceptDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "intercept-from",
                    "interceptFrom"
            },
            inline = true,
            types = org.apache.camel.model.InterceptFromDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition"),
                    @YamlProperty(name = "uri", type = "string")
            }
    )
    public static class InterceptFromDefinitionDeserializer extends YamlDeserializerBase {
        public InterceptFromDefinitionDeserializer() {
            super(InterceptFromDefinition.class);
        }

        @Override
        protected InterceptFromDefinition newInstance() {
            return new InterceptFromDefinition();
        }

        @Override
        protected InterceptFromDefinition newInstance(String value) {
            return new InterceptFromDefinition(value);
        }

        @Override
        protected boolean setProperty(InterceptFromDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "uri": {
                    String val = asText(node);
                    target.setUri(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "intercept-send-to-endpoint",
                    "interceptSendToEndpoint"
            },
            inline = true,
            types = org.apache.camel.model.InterceptSendToEndpointDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "after-uri", type = "string"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "skip-send-to-original-endpoint", type = "string"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition"),
                    @YamlProperty(name = "uri", type = "string", required = true)
            }
    )
    public static class InterceptSendToEndpointDefinitionDeserializer extends YamlDeserializerBase {
        public InterceptSendToEndpointDefinitionDeserializer() {
            super(InterceptSendToEndpointDefinition.class);
        }

        @Override
        protected InterceptSendToEndpointDefinition newInstance() {
            return new InterceptSendToEndpointDefinition();
        }

        @Override
        protected InterceptSendToEndpointDefinition newInstance(String value) {
            return new InterceptSendToEndpointDefinition(value);
        }

        @Override
        protected boolean setProperty(InterceptSendToEndpointDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "after-uri": {
                    String val = asText(node);
                    target.setAfterUri(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "skip-send-to-original-endpoint": {
                    String val = asText(node);
                    target.setSkipSendToOriginalEndpoint(val);
                    break;
                }
                case "uri": {
                    String val = asText(node);
                    target.setUri(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "jackson-xml",
                    "jacksonXml"
            },
            types = org.apache.camel.model.dataformat.JacksonXMLDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-jms-type", type = "boolean"),
                    @YamlProperty(name = "allow-unmarshall-type", type = "boolean"),
                    @YamlProperty(name = "collection-type", type = "string"),
                    @YamlProperty(name = "content-type-header", type = "boolean"),
                    @YamlProperty(name = "disable-features", type = "string"),
                    @YamlProperty(name = "enable-features", type = "string"),
                    @YamlProperty(name = "enable-jaxb-annotation-module", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "include", type = "string"),
                    @YamlProperty(name = "json-view", type = "string"),
                    @YamlProperty(name = "module-class-names", type = "string"),
                    @YamlProperty(name = "module-refs", type = "string"),
                    @YamlProperty(name = "pretty-print", type = "boolean"),
                    @YamlProperty(name = "timezone", type = "string"),
                    @YamlProperty(name = "unmarshal-type", type = "string"),
                    @YamlProperty(name = "use-list", type = "boolean"),
                    @YamlProperty(name = "xml-mapper", type = "string")
            }
    )
    public static class JacksonXMLDataFormatDeserializer extends YamlDeserializerBase {
        public JacksonXMLDataFormatDeserializer() {
            super(JacksonXMLDataFormat.class);
        }

        @Override
        protected JacksonXMLDataFormat newInstance() {
            return new JacksonXMLDataFormat();
        }

        @Override
        protected boolean setProperty(JacksonXMLDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-jms-type": {
                    String val = asText(node);
                    target.setAllowJmsType(val);
                    break;
                }
                case "allow-unmarshall-type": {
                    String val = asText(node);
                    target.setAllowUnmarshallType(val);
                    break;
                }
                case "collection-type": {
                    String val = asText(node);
                    target.setCollectionTypeName(val);
                    break;
                }
                case "content-type-header": {
                    String val = asText(node);
                    target.setContentTypeHeader(val);
                    break;
                }
                case "disable-features": {
                    String val = asText(node);
                    target.setDisableFeatures(val);
                    break;
                }
                case "enable-features": {
                    String val = asText(node);
                    target.setEnableFeatures(val);
                    break;
                }
                case "enable-jaxb-annotation-module": {
                    String val = asText(node);
                    target.setEnableJaxbAnnotationModule(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "include": {
                    String val = asText(node);
                    target.setInclude(val);
                    break;
                }
                case "json-view": {
                    String val = asText(node);
                    target.setJsonViewTypeName(val);
                    break;
                }
                case "module-class-names": {
                    String val = asText(node);
                    target.setModuleClassNames(val);
                    break;
                }
                case "module-refs": {
                    String val = asText(node);
                    target.setModuleRefs(val);
                    break;
                }
                case "pretty-print": {
                    String val = asText(node);
                    target.setPrettyPrint(val);
                    break;
                }
                case "timezone": {
                    String val = asText(node);
                    target.setTimezone(val);
                    break;
                }
                case "unmarshal-type": {
                    String val = asText(node);
                    target.setUnmarshalTypeName(val);
                    break;
                }
                case "use-list": {
                    String val = asText(node);
                    target.setUseList(val);
                    break;
                }
                case "xml-mapper": {
                    String val = asText(node);
                    target.setXmlMapper(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "js",
            inline = true,
            types = org.apache.camel.model.language.JavaScriptExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class JavaScriptExpressionDeserializer extends YamlDeserializerBase {
        public JavaScriptExpressionDeserializer() {
            super(JavaScriptExpression.class);
        }

        @Override
        protected JavaScriptExpression newInstance() {
            return new JavaScriptExpression();
        }

        @Override
        protected JavaScriptExpression newInstance(String value) {
            return new JavaScriptExpression(value);
        }

        @Override
        protected boolean setProperty(JavaScriptExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "jaxb",
            types = org.apache.camel.model.dataformat.JaxbDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "access-external-schema-protocols", type = "string"),
                    @YamlProperty(name = "content-type-header", type = "boolean"),
                    @YamlProperty(name = "context-path", type = "string", required = true),
                    @YamlProperty(name = "context-path-is-class-name", type = "boolean"),
                    @YamlProperty(name = "encoding", type = "string"),
                    @YamlProperty(name = "filter-non-xml-chars", type = "boolean"),
                    @YamlProperty(name = "fragment", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ignore-jaxb-element", type = "boolean"),
                    @YamlProperty(name = "jaxb-provider-properties", type = "string"),
                    @YamlProperty(name = "must-be-jaxb-element", type = "boolean"),
                    @YamlProperty(name = "namespace-prefix-ref", type = "string"),
                    @YamlProperty(name = "no-namespace-schema-location", type = "string"),
                    @YamlProperty(name = "object-factory", type = "boolean"),
                    @YamlProperty(name = "part-class", type = "string"),
                    @YamlProperty(name = "part-namespace", type = "string"),
                    @YamlProperty(name = "pretty-print", type = "boolean"),
                    @YamlProperty(name = "schema", type = "string"),
                    @YamlProperty(name = "schema-location", type = "string"),
                    @YamlProperty(name = "schema-severity-level", type = "enum:0,1,2"),
                    @YamlProperty(name = "xml-stream-writer-wrapper", type = "string")
            }
    )
    public static class JaxbDataFormatDeserializer extends YamlDeserializerBase {
        public JaxbDataFormatDeserializer() {
            super(JaxbDataFormat.class);
        }

        @Override
        protected JaxbDataFormat newInstance() {
            return new JaxbDataFormat();
        }

        @Override
        protected boolean setProperty(JaxbDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "access-external-schema-protocols": {
                    String val = asText(node);
                    target.setAccessExternalSchemaProtocols(val);
                    break;
                }
                case "content-type-header": {
                    String val = asText(node);
                    target.setContentTypeHeader(val);
                    break;
                }
                case "context-path": {
                    String val = asText(node);
                    target.setContextPath(val);
                    break;
                }
                case "context-path-is-class-name": {
                    String val = asText(node);
                    target.setContextPathIsClassName(val);
                    break;
                }
                case "encoding": {
                    String val = asText(node);
                    target.setEncoding(val);
                    break;
                }
                case "filter-non-xml-chars": {
                    String val = asText(node);
                    target.setFilterNonXmlChars(val);
                    break;
                }
                case "fragment": {
                    String val = asText(node);
                    target.setFragment(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "ignore-jaxb-element": {
                    String val = asText(node);
                    target.setIgnoreJAXBElement(val);
                    break;
                }
                case "jaxb-provider-properties": {
                    String val = asText(node);
                    target.setJaxbProviderProperties(val);
                    break;
                }
                case "must-be-jaxb-element": {
                    String val = asText(node);
                    target.setMustBeJAXBElement(val);
                    break;
                }
                case "namespace-prefix-ref": {
                    String val = asText(node);
                    target.setNamespacePrefixRef(val);
                    break;
                }
                case "no-namespace-schema-location": {
                    String val = asText(node);
                    target.setNoNamespaceSchemaLocation(val);
                    break;
                }
                case "object-factory": {
                    String val = asText(node);
                    target.setObjectFactory(val);
                    break;
                }
                case "part-class": {
                    String val = asText(node);
                    target.setPartClass(val);
                    break;
                }
                case "part-namespace": {
                    String val = asText(node);
                    target.setPartNamespace(val);
                    break;
                }
                case "pretty-print": {
                    String val = asText(node);
                    target.setPrettyPrint(val);
                    break;
                }
                case "schema": {
                    String val = asText(node);
                    target.setSchema(val);
                    break;
                }
                case "schema-location": {
                    String val = asText(node);
                    target.setSchemaLocation(val);
                    break;
                }
                case "schema-severity-level": {
                    String val = asText(node);
                    target.setSchemaSeverityLevel(val);
                    break;
                }
                case "xml-stream-writer-wrapper": {
                    String val = asText(node);
                    target.setXmlStreamWriterWrapper(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "joor",
            inline = true,
            types = org.apache.camel.model.language.JoorExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "pre-compile", type = "boolean"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "single-quotes", type = "boolean"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class JoorExpressionDeserializer extends YamlDeserializerBase {
        public JoorExpressionDeserializer() {
            super(JoorExpression.class);
        }

        @Override
        protected JoorExpression newInstance() {
            return new JoorExpression();
        }

        @Override
        protected JoorExpression newInstance(String value) {
            return new JoorExpression(value);
        }

        @Override
        protected boolean setProperty(JoorExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "pre-compile": {
                    String val = asText(node);
                    target.setPreCompile(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "single-quotes": {
                    String val = asText(node);
                    target.setSingleQuotes(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "jq",
            inline = true,
            types = org.apache.camel.model.language.JqExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "header-name", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "property-name", type = "string"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class JqExpressionDeserializer extends YamlDeserializerBase {
        public JqExpressionDeserializer() {
            super(JqExpression.class);
        }

        @Override
        protected JqExpression newInstance() {
            return new JqExpression();
        }

        @Override
        protected JqExpression newInstance(String value) {
            return new JqExpression(value);
        }

        @Override
        protected boolean setProperty(JqExpression target, String propertyKey, String propertyName,
                Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "header-name": {
                    String val = asText(node);
                    target.setHeaderName(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "property-name": {
                    String val = asText(node);
                    target.setPropertyName(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "json-api",
                    "jsonApi"
            },
            types = org.apache.camel.model.dataformat.JsonApiDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "data-format-types", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "main-format-type", type = "string")
            }
    )
    public static class JsonApiDataFormatDeserializer extends YamlDeserializerBase {
        public JsonApiDataFormatDeserializer() {
            super(JsonApiDataFormat.class);
        }

        @Override
        protected JsonApiDataFormat newInstance() {
            return new JsonApiDataFormat();
        }

        @Override
        protected boolean setProperty(JsonApiDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "data-format-types": {
                    String val = asText(node);
                    target.setDataFormatTypes(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "main-format-type": {
                    String val = asText(node);
                    target.setMainFormatType(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "json",
            types = org.apache.camel.model.dataformat.JsonDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-jms-type", type = "boolean"),
                    @YamlProperty(name = "allow-unmarshall-type", type = "boolean"),
                    @YamlProperty(name = "auto-discover-object-mapper", type = "boolean"),
                    @YamlProperty(name = "auto-discover-schema-resolver", type = "boolean"),
                    @YamlProperty(name = "collection-type", type = "string"),
                    @YamlProperty(name = "content-type-header", type = "boolean"),
                    @YamlProperty(name = "date-format-pattern", type = "string"),
                    @YamlProperty(name = "disable-features", type = "string"),
                    @YamlProperty(name = "drop-root-node", type = "boolean"),
                    @YamlProperty(name = "enable-features", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "include", type = "string"),
                    @YamlProperty(name = "json-view", type = "string"),
                    @YamlProperty(name = "library", type = "enum:Fastjson,Gson,Jackson,Johnzon,Jsonb,XStream"),
                    @YamlProperty(name = "module-class-names", type = "string"),
                    @YamlProperty(name = "module-refs", type = "string"),
                    @YamlProperty(name = "naming-strategy", type = "string"),
                    @YamlProperty(name = "object-mapper", type = "string"),
                    @YamlProperty(name = "permissions", type = "string"),
                    @YamlProperty(name = "pretty-print", type = "boolean"),
                    @YamlProperty(name = "schema-resolver", type = "string"),
                    @YamlProperty(name = "timezone", type = "string"),
                    @YamlProperty(name = "unmarshal-type", type = "string"),
                    @YamlProperty(name = "use-default-object-mapper", type = "boolean"),
                    @YamlProperty(name = "use-list", type = "boolean")
            }
    )
    public static class JsonDataFormatDeserializer extends YamlDeserializerBase {
        public JsonDataFormatDeserializer() {
            super(JsonDataFormat.class);
        }

        @Override
        protected JsonDataFormat newInstance() {
            return new JsonDataFormat();
        }

        @Override
        protected boolean setProperty(JsonDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-jms-type": {
                    String val = asText(node);
                    target.setAllowJmsType(val);
                    break;
                }
                case "allow-unmarshall-type": {
                    String val = asText(node);
                    target.setAllowUnmarshallType(val);
                    break;
                }
                case "auto-discover-object-mapper": {
                    String val = asText(node);
                    target.setAutoDiscoverObjectMapper(val);
                    break;
                }
                case "auto-discover-schema-resolver": {
                    String val = asText(node);
                    target.setAutoDiscoverSchemaResolver(val);
                    break;
                }
                case "collection-type": {
                    String val = asText(node);
                    target.setCollectionTypeName(val);
                    break;
                }
                case "content-type-header": {
                    String val = asText(node);
                    target.setContentTypeHeader(val);
                    break;
                }
                case "date-format-pattern": {
                    String val = asText(node);
                    target.setDateFormatPattern(val);
                    break;
                }
                case "disable-features": {
                    String val = asText(node);
                    target.setDisableFeatures(val);
                    break;
                }
                case "drop-root-node": {
                    String val = asText(node);
                    target.setDropRootNode(val);
                    break;
                }
                case "enable-features": {
                    String val = asText(node);
                    target.setEnableFeatures(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "include": {
                    String val = asText(node);
                    target.setInclude(val);
                    break;
                }
                case "json-view": {
                    String val = asText(node);
                    target.setJsonViewTypeName(val);
                    break;
                }
                case "library": {
                    target.setLibrary(asEnum(node, org.apache.camel.model.dataformat.JsonLibrary.class));
                    break;
                }
                case "module-class-names": {
                    String val = asText(node);
                    target.setModuleClassNames(val);
                    break;
                }
                case "module-refs": {
                    String val = asText(node);
                    target.setModuleRefs(val);
                    break;
                }
                case "naming-strategy": {
                    String val = asText(node);
                    target.setNamingStrategy(val);
                    break;
                }
                case "object-mapper": {
                    String val = asText(node);
                    target.setObjectMapper(val);
                    break;
                }
                case "permissions": {
                    String val = asText(node);
                    target.setPermissions(val);
                    break;
                }
                case "pretty-print": {
                    String val = asText(node);
                    target.setPrettyPrint(val);
                    break;
                }
                case "schema-resolver": {
                    String val = asText(node);
                    target.setSchemaResolver(val);
                    break;
                }
                case "timezone": {
                    String val = asText(node);
                    target.setTimezone(val);
                    break;
                }
                case "unmarshal-type": {
                    String val = asText(node);
                    target.setUnmarshalTypeName(val);
                    break;
                }
                case "use-default-object-mapper": {
                    String val = asText(node);
                    target.setUseDefaultObjectMapper(val);
                    break;
                }
                case "use-list": {
                    String val = asText(node);
                    target.setUseList(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "jsonpath",
            inline = true,
            types = org.apache.camel.model.language.JsonPathExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-easy-predicate", type = "boolean"),
                    @YamlProperty(name = "allow-simple", type = "boolean"),
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "header-name", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "option", type = "enum:DEFAULT_PATH_LEAF_TO_NULL,ALWAYS_RETURN_LIST,AS_PATH_LIST,SUPPRESS_EXCEPTIONS,REQUIRE_PROPERTIES"),
                    @YamlProperty(name = "property-name", type = "string"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "suppress-exceptions", type = "boolean"),
                    @YamlProperty(name = "trim", type = "boolean"),
                    @YamlProperty(name = "unpack-array", type = "boolean"),
                    @YamlProperty(name = "write-as-string", type = "boolean")
            }
    )
    public static class JsonPathExpressionDeserializer extends YamlDeserializerBase {
        public JsonPathExpressionDeserializer() {
            super(JsonPathExpression.class);
        }

        @Override
        protected JsonPathExpression newInstance() {
            return new JsonPathExpression();
        }

        @Override
        protected JsonPathExpression newInstance(String value) {
            return new JsonPathExpression(value);
        }

        @Override
        protected boolean setProperty(JsonPathExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-easy-predicate": {
                    String val = asText(node);
                    target.setAllowEasyPredicate(val);
                    break;
                }
                case "allow-simple": {
                    String val = asText(node);
                    target.setAllowSimple(val);
                    break;
                }
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "header-name": {
                    String val = asText(node);
                    target.setHeaderName(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "option": {
                    String val = asText(node);
                    target.setOption(val);
                    break;
                }
                case "property-name": {
                    String val = asText(node);
                    target.setPropertyName(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "suppress-exceptions": {
                    String val = asText(node);
                    target.setSuppressExceptions(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                case "unpack-array": {
                    String val = asText(node);
                    target.setUnpackArray(val);
                    break;
                }
                case "write-as-string": {
                    String val = asText(node);
                    target.setWriteAsString(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "jta-transaction-error-handler",
                    "jtaTransactionErrorHandler"
            },
            types = org.apache.camel.model.errorhandler.JtaTransactionErrorHandlerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "executor-service-ref", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "level", type = "enum:TRACE,DEBUG,INFO,WARN,ERROR,OFF"),
                    @YamlProperty(name = "log-name", type = "string"),
                    @YamlProperty(name = "logger-ref", type = "string"),
                    @YamlProperty(name = "on-exception-occurred-ref", type = "string"),
                    @YamlProperty(name = "on-prepare-failure-ref", type = "string"),
                    @YamlProperty(name = "on-redelivery-ref", type = "string"),
                    @YamlProperty(name = "redelivery-policy", type = "object:org.apache.camel.model.RedeliveryPolicyDefinition"),
                    @YamlProperty(name = "redelivery-policy-ref", type = "string"),
                    @YamlProperty(name = "retry-while-ref", type = "string"),
                    @YamlProperty(name = "rollback-logging-level", type = "enum:TRACE,DEBUG,INFO,WARN,ERROR,OFF"),
                    @YamlProperty(name = "transacted-policy-ref", type = "string"),
                    @YamlProperty(name = "use-original-body", type = "boolean"),
                    @YamlProperty(name = "use-original-message", type = "boolean")
            }
    )
    public static class JtaTransactionErrorHandlerDefinitionDeserializer extends YamlDeserializerBase {
        public JtaTransactionErrorHandlerDefinitionDeserializer() {
            super(JtaTransactionErrorHandlerDefinition.class);
        }

        @Override
        protected JtaTransactionErrorHandlerDefinition newInstance() {
            return new JtaTransactionErrorHandlerDefinition();
        }

        @Override
        protected boolean setProperty(JtaTransactionErrorHandlerDefinition target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "executor-service-ref": {
                    String val = asText(node);
                    target.setExecutorServiceRef(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "level": {
                    String val = asText(node);
                    target.setLevel(val);
                    break;
                }
                case "log-name": {
                    String val = asText(node);
                    target.setLogName(val);
                    break;
                }
                case "logger-ref": {
                    String val = asText(node);
                    target.setLoggerRef(val);
                    break;
                }
                case "on-exception-occurred-ref": {
                    String val = asText(node);
                    target.setOnExceptionOccurredRef(val);
                    break;
                }
                case "on-prepare-failure-ref": {
                    String val = asText(node);
                    target.setOnPrepareFailureRef(val);
                    break;
                }
                case "on-redelivery-ref": {
                    String val = asText(node);
                    target.setOnRedeliveryRef(val);
                    break;
                }
                case "redelivery-policy": {
                    org.apache.camel.model.RedeliveryPolicyDefinition val = asType(node, org.apache.camel.model.RedeliveryPolicyDefinition.class);
                    target.setRedeliveryPolicy(val);
                    break;
                }
                case "redelivery-policy-ref": {
                    String val = asText(node);
                    target.setRedeliveryPolicyRef(val);
                    break;
                }
                case "retry-while-ref": {
                    String val = asText(node);
                    target.setRetryWhileRef(val);
                    break;
                }
                case "rollback-logging-level": {
                    String val = asText(node);
                    target.setRollbackLoggingLevel(val);
                    break;
                }
                case "transacted-policy-ref": {
                    String val = asText(node);
                    target.setTransactedPolicyRef(val);
                    break;
                }
                case "use-original-body": {
                    String val = asText(node);
                    target.setUseOriginalBody(val);
                    break;
                }
                case "use-original-message": {
                    String val = asText(node);
                    target.setUseOriginalMessage(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "kubernetes-service-discovery",
                    "kubernetesServiceDiscovery"
            },
            types = org.apache.camel.model.cloud.KubernetesServiceCallServiceDiscoveryConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "api-version", type = "string"),
                    @YamlProperty(name = "ca-cert-data", type = "string"),
                    @YamlProperty(name = "ca-cert-file", type = "string"),
                    @YamlProperty(name = "client-cert-data", type = "string"),
                    @YamlProperty(name = "client-cert-file", type = "string"),
                    @YamlProperty(name = "client-key-algo", type = "string"),
                    @YamlProperty(name = "client-key-data", type = "string"),
                    @YamlProperty(name = "client-key-file", type = "string"),
                    @YamlProperty(name = "client-key-passphrase", type = "string"),
                    @YamlProperty(name = "dns-domain", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "lookup", type = "enum:environment,dns,client"),
                    @YamlProperty(name = "master-url", type = "string"),
                    @YamlProperty(name = "namespace", type = "string"),
                    @YamlProperty(name = "oauth-token", type = "string"),
                    @YamlProperty(name = "password", type = "string"),
                    @YamlProperty(name = "port-name", type = "string"),
                    @YamlProperty(name = "port-protocol", type = "string"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "trust-certs", type = "boolean"),
                    @YamlProperty(name = "username", type = "string")
            }
    )
    public static class KubernetesServiceCallServiceDiscoveryConfigurationDeserializer extends YamlDeserializerBase {
        public KubernetesServiceCallServiceDiscoveryConfigurationDeserializer() {
            super(KubernetesServiceCallServiceDiscoveryConfiguration.class);
        }

        @Override
        protected KubernetesServiceCallServiceDiscoveryConfiguration newInstance() {
            return new KubernetesServiceCallServiceDiscoveryConfiguration();
        }

        @Override
        protected boolean setProperty(KubernetesServiceCallServiceDiscoveryConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "api-version": {
                    String val = asText(node);
                    target.setApiVersion(val);
                    break;
                }
                case "ca-cert-data": {
                    String val = asText(node);
                    target.setCaCertData(val);
                    break;
                }
                case "ca-cert-file": {
                    String val = asText(node);
                    target.setCaCertFile(val);
                    break;
                }
                case "client-cert-data": {
                    String val = asText(node);
                    target.setClientCertData(val);
                    break;
                }
                case "client-cert-file": {
                    String val = asText(node);
                    target.setClientCertFile(val);
                    break;
                }
                case "client-key-algo": {
                    String val = asText(node);
                    target.setClientKeyAlgo(val);
                    break;
                }
                case "client-key-data": {
                    String val = asText(node);
                    target.setClientKeyData(val);
                    break;
                }
                case "client-key-file": {
                    String val = asText(node);
                    target.setClientKeyFile(val);
                    break;
                }
                case "client-key-passphrase": {
                    String val = asText(node);
                    target.setClientKeyPassphrase(val);
                    break;
                }
                case "dns-domain": {
                    String val = asText(node);
                    target.setDnsDomain(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "lookup": {
                    String val = asText(node);
                    target.setLookup(val);
                    break;
                }
                case "master-url": {
                    String val = asText(node);
                    target.setMasterUrl(val);
                    break;
                }
                case "namespace": {
                    String val = asText(node);
                    target.setNamespace(val);
                    break;
                }
                case "oauth-token": {
                    String val = asText(node);
                    target.setOauthToken(val);
                    break;
                }
                case "password": {
                    String val = asText(node);
                    target.setPassword(val);
                    break;
                }
                case "port-name": {
                    String val = asText(node);
                    target.setPortName(val);
                    break;
                }
                case "port-protocol": {
                    String val = asText(node);
                    target.setPortProtocol(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                case "trust-certs": {
                    String val = asText(node);
                    target.setTrustCerts(val);
                    break;
                }
                case "username": {
                    String val = asText(node);
                    target.setUsername(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "lzf",
            types = org.apache.camel.model.dataformat.LZFDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "using-parallel-compression", type = "boolean")
            }
    )
    public static class LZFDataFormatDeserializer extends YamlDeserializerBase {
        public LZFDataFormatDeserializer() {
            super(LZFDataFormat.class);
        }

        @Override
        protected LZFDataFormat newInstance() {
            return new LZFDataFormat();
        }

        @Override
        protected boolean setProperty(LZFDataFormat target, String propertyKey, String propertyName,
                Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "using-parallel-compression": {
                    String val = asText(node);
                    target.setUsingParallelCompression(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "language",
            types = org.apache.camel.model.language.LanguageExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "language", type = "string", required = true),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class LanguageExpressionDeserializer extends YamlDeserializerBase {
        public LanguageExpressionDeserializer() {
            super(LanguageExpression.class);
        }

        @Override
        protected LanguageExpression newInstance() {
            return new LanguageExpression();
        }

        @Override
        protected boolean setProperty(LanguageExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "language": {
                    String val = asText(node);
                    target.setLanguage(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "load-balance",
                    "loadBalance"
            },
            types = org.apache.camel.model.LoadBalanceDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "custom-load-balancer", type = "object:org.apache.camel.model.loadbalancer.CustomLoadBalancerDefinition"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "failover", type = "object:org.apache.camel.model.loadbalancer.FailoverLoadBalancerDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "random", type = "object:org.apache.camel.model.loadbalancer.RandomLoadBalancerDefinition"),
                    @YamlProperty(name = "round-robin", type = "object:org.apache.camel.model.loadbalancer.RoundRobinLoadBalancerDefinition"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition"),
                    @YamlProperty(name = "sticky", type = "object:org.apache.camel.model.loadbalancer.StickyLoadBalancerDefinition"),
                    @YamlProperty(name = "topic", type = "object:org.apache.camel.model.loadbalancer.TopicLoadBalancerDefinition"),
                    @YamlProperty(name = "weighted", type = "object:org.apache.camel.model.loadbalancer.WeightedLoadBalancerDefinition")
            }
    )
    public static class LoadBalanceDefinitionDeserializer extends YamlDeserializerBase {
        public LoadBalanceDefinitionDeserializer() {
            super(LoadBalanceDefinition.class);
        }

        @Override
        protected LoadBalanceDefinition newInstance() {
            return new LoadBalanceDefinition();
        }

        @Override
        protected boolean setProperty(LoadBalanceDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "load-balancer-type": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "custom-load-balancer": {
                    org.apache.camel.model.loadbalancer.CustomLoadBalancerDefinition val = asType(node, org.apache.camel.model.loadbalancer.CustomLoadBalancerDefinition.class);
                    target.setLoadBalancerType(val);
                    break;
                }
                case "failover": {
                    org.apache.camel.model.loadbalancer.FailoverLoadBalancerDefinition val = asType(node, org.apache.camel.model.loadbalancer.FailoverLoadBalancerDefinition.class);
                    target.setLoadBalancerType(val);
                    break;
                }
                case "random": {
                    org.apache.camel.model.loadbalancer.RandomLoadBalancerDefinition val = asType(node, org.apache.camel.model.loadbalancer.RandomLoadBalancerDefinition.class);
                    target.setLoadBalancerType(val);
                    break;
                }
                case "round-robin": {
                    org.apache.camel.model.loadbalancer.RoundRobinLoadBalancerDefinition val = asType(node, org.apache.camel.model.loadbalancer.RoundRobinLoadBalancerDefinition.class);
                    target.setLoadBalancerType(val);
                    break;
                }
                case "sticky": {
                    org.apache.camel.model.loadbalancer.StickyLoadBalancerDefinition val = asType(node, org.apache.camel.model.loadbalancer.StickyLoadBalancerDefinition.class);
                    target.setLoadBalancerType(val);
                    break;
                }
                case "topic": {
                    org.apache.camel.model.loadbalancer.TopicLoadBalancerDefinition val = asType(node, org.apache.camel.model.loadbalancer.TopicLoadBalancerDefinition.class);
                    target.setLoadBalancerType(val);
                    break;
                }
                case "weighted": {
                    org.apache.camel.model.loadbalancer.WeightedLoadBalancerDefinition val = asType(node, org.apache.camel.model.loadbalancer.WeightedLoadBalancerDefinition.class);
                    target.setLoadBalancerType(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "log",
            inline = true,
            types = org.apache.camel.model.LogDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "log-name", type = "string"),
                    @YamlProperty(name = "logger", type = "string"),
                    @YamlProperty(name = "logging-level", type = "enum:TRACE,DEBUG,INFO,WARN,ERROR,OFF"),
                    @YamlProperty(name = "marker", type = "string"),
                    @YamlProperty(name = "message", type = "string", required = true)
            }
    )
    public static class LogDefinitionDeserializer extends YamlDeserializerBase {
        public LogDefinitionDeserializer() {
            super(LogDefinition.class);
        }

        @Override
        protected LogDefinition newInstance() {
            return new LogDefinition();
        }

        @Override
        protected LogDefinition newInstance(String value) {
            return new LogDefinition(value);
        }

        @Override
        protected boolean setProperty(LogDefinition target, String propertyKey, String propertyName,
                Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "log-name": {
                    String val = asText(node);
                    target.setLogName(val);
                    break;
                }
                case "logger": {
                    String val = asText(node);
                    target.setLogger(val);
                    break;
                }
                case "logging-level": {
                    String val = asText(node);
                    target.setLoggingLevel(val);
                    break;
                }
                case "marker": {
                    String val = asText(node);
                    target.setMarker(val);
                    break;
                }
                case "message": {
                    String val = asText(node);
                    target.setMessage(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "loop",
            types = org.apache.camel.model.LoopDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "break-on-shutdown", type = "boolean"),
                    @YamlProperty(name = "copy", type = "boolean"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "do-while", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class LoopDefinitionDeserializer extends YamlDeserializerBase {
        public LoopDefinitionDeserializer() {
            super(LoopDefinition.class);
        }

        @Override
        protected LoopDefinition newInstance() {
            return new LoopDefinition();
        }

        @Override
        protected boolean setProperty(LoopDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "break-on-shutdown": {
                    String val = asText(node);
                    target.setBreakOnShutdown(val);
                    break;
                }
                case "copy": {
                    String val = asText(node);
                    target.setCopy(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "do-while": {
                    String val = asText(node);
                    target.setDoWhile(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "marshal",
            types = org.apache.camel.model.MarshalDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "any23", type = "object:org.apache.camel.model.dataformat.Any23DataFormat"),
                    @YamlProperty(name = "asn1", type = "object:org.apache.camel.model.dataformat.ASN1DataFormat"),
                    @YamlProperty(name = "avro", type = "object:org.apache.camel.model.dataformat.AvroDataFormat"),
                    @YamlProperty(name = "barcode", type = "object:org.apache.camel.model.dataformat.BarcodeDataFormat"),
                    @YamlProperty(name = "base64", type = "object:org.apache.camel.model.dataformat.Base64DataFormat"),
                    @YamlProperty(name = "bindy", type = "object:org.apache.camel.model.dataformat.BindyDataFormat"),
                    @YamlProperty(name = "cbor", type = "object:org.apache.camel.model.dataformat.CBORDataFormat"),
                    @YamlProperty(name = "crypto", type = "object:org.apache.camel.model.dataformat.CryptoDataFormat"),
                    @YamlProperty(name = "csv", type = "object:org.apache.camel.model.dataformat.CsvDataFormat"),
                    @YamlProperty(name = "custom", type = "object:org.apache.camel.model.dataformat.CustomDataFormat"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "fhir-json", type = "object:org.apache.camel.model.dataformat.FhirJsonDataFormat"),
                    @YamlProperty(name = "fhir-xml", type = "object:org.apache.camel.model.dataformat.FhirXmlDataFormat"),
                    @YamlProperty(name = "flatpack", type = "object:org.apache.camel.model.dataformat.FlatpackDataFormat"),
                    @YamlProperty(name = "grok", type = "object:org.apache.camel.model.dataformat.GrokDataFormat"),
                    @YamlProperty(name = "gzip-deflater", type = "object:org.apache.camel.model.dataformat.GzipDeflaterDataFormat"),
                    @YamlProperty(name = "hl7", type = "object:org.apache.camel.model.dataformat.HL7DataFormat"),
                    @YamlProperty(name = "ical", type = "object:org.apache.camel.model.dataformat.IcalDataFormat"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "jackson-xml", type = "object:org.apache.camel.model.dataformat.JacksonXMLDataFormat"),
                    @YamlProperty(name = "jaxb", type = "object:org.apache.camel.model.dataformat.JaxbDataFormat"),
                    @YamlProperty(name = "json", type = "object:org.apache.camel.model.dataformat.JsonDataFormat"),
                    @YamlProperty(name = "json-api", type = "object:org.apache.camel.model.dataformat.JsonApiDataFormat"),
                    @YamlProperty(name = "lzf", type = "object:org.apache.camel.model.dataformat.LZFDataFormat"),
                    @YamlProperty(name = "mime-multipart", type = "object:org.apache.camel.model.dataformat.MimeMultipartDataFormat"),
                    @YamlProperty(name = "pgp", type = "object:org.apache.camel.model.dataformat.PGPDataFormat"),
                    @YamlProperty(name = "protobuf", type = "object:org.apache.camel.model.dataformat.ProtobufDataFormat"),
                    @YamlProperty(name = "rss", type = "object:org.apache.camel.model.dataformat.RssDataFormat"),
                    @YamlProperty(name = "soap", type = "object:org.apache.camel.model.dataformat.SoapDataFormat"),
                    @YamlProperty(name = "swift-mt", type = "object:org.apache.camel.model.dataformat.SwiftMtDataFormat"),
                    @YamlProperty(name = "swift-mx", type = "object:org.apache.camel.model.dataformat.SwiftMxDataFormat"),
                    @YamlProperty(name = "syslog", type = "object:org.apache.camel.model.dataformat.SyslogDataFormat"),
                    @YamlProperty(name = "tar-file", type = "object:org.apache.camel.model.dataformat.TarFileDataFormat"),
                    @YamlProperty(name = "thrift", type = "object:org.apache.camel.model.dataformat.ThriftDataFormat"),
                    @YamlProperty(name = "tidy-markup", type = "object:org.apache.camel.model.dataformat.TidyMarkupDataFormat"),
                    @YamlProperty(name = "univocity-csv", type = "object:org.apache.camel.model.dataformat.UniVocityCsvDataFormat"),
                    @YamlProperty(name = "univocity-fixed", type = "object:org.apache.camel.model.dataformat.UniVocityFixedDataFormat"),
                    @YamlProperty(name = "univocity-tsv", type = "object:org.apache.camel.model.dataformat.UniVocityTsvDataFormat"),
                    @YamlProperty(name = "xml-security", type = "object:org.apache.camel.model.dataformat.XMLSecurityDataFormat"),
                    @YamlProperty(name = "xstream", type = "object:org.apache.camel.model.dataformat.XStreamDataFormat"),
                    @YamlProperty(name = "yaml", type = "object:org.apache.camel.model.dataformat.YAMLDataFormat"),
                    @YamlProperty(name = "zip-deflater", type = "object:org.apache.camel.model.dataformat.ZipDeflaterDataFormat"),
                    @YamlProperty(name = "zip-file", type = "object:org.apache.camel.model.dataformat.ZipFileDataFormat")
            }
    )
    public static class MarshalDefinitionDeserializer extends YamlDeserializerBase {
        public MarshalDefinitionDeserializer() {
            super(MarshalDefinition.class);
        }

        @Override
        protected MarshalDefinition newInstance() {
            return new MarshalDefinition();
        }

        @Override
        protected boolean setProperty(MarshalDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "data-format-type": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "any23": {
                    org.apache.camel.model.dataformat.Any23DataFormat val = asType(node, org.apache.camel.model.dataformat.Any23DataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "asn1": {
                    org.apache.camel.model.dataformat.ASN1DataFormat val = asType(node, org.apache.camel.model.dataformat.ASN1DataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "avro": {
                    org.apache.camel.model.dataformat.AvroDataFormat val = asType(node, org.apache.camel.model.dataformat.AvroDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "barcode": {
                    org.apache.camel.model.dataformat.BarcodeDataFormat val = asType(node, org.apache.camel.model.dataformat.BarcodeDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "base64": {
                    org.apache.camel.model.dataformat.Base64DataFormat val = asType(node, org.apache.camel.model.dataformat.Base64DataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "bindy": {
                    org.apache.camel.model.dataformat.BindyDataFormat val = asType(node, org.apache.camel.model.dataformat.BindyDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "cbor": {
                    org.apache.camel.model.dataformat.CBORDataFormat val = asType(node, org.apache.camel.model.dataformat.CBORDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "crypto": {
                    org.apache.camel.model.dataformat.CryptoDataFormat val = asType(node, org.apache.camel.model.dataformat.CryptoDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "csv": {
                    org.apache.camel.model.dataformat.CsvDataFormat val = asType(node, org.apache.camel.model.dataformat.CsvDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "custom": {
                    org.apache.camel.model.dataformat.CustomDataFormat val = asType(node, org.apache.camel.model.dataformat.CustomDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "fhir-json": {
                    org.apache.camel.model.dataformat.FhirJsonDataFormat val = asType(node, org.apache.camel.model.dataformat.FhirJsonDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "fhir-xml": {
                    org.apache.camel.model.dataformat.FhirXmlDataFormat val = asType(node, org.apache.camel.model.dataformat.FhirXmlDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "flatpack": {
                    org.apache.camel.model.dataformat.FlatpackDataFormat val = asType(node, org.apache.camel.model.dataformat.FlatpackDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "grok": {
                    org.apache.camel.model.dataformat.GrokDataFormat val = asType(node, org.apache.camel.model.dataformat.GrokDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "gzip-deflater": {
                    org.apache.camel.model.dataformat.GzipDeflaterDataFormat val = asType(node, org.apache.camel.model.dataformat.GzipDeflaterDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "hl7": {
                    org.apache.camel.model.dataformat.HL7DataFormat val = asType(node, org.apache.camel.model.dataformat.HL7DataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "ical": {
                    org.apache.camel.model.dataformat.IcalDataFormat val = asType(node, org.apache.camel.model.dataformat.IcalDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "jackson-xml": {
                    org.apache.camel.model.dataformat.JacksonXMLDataFormat val = asType(node, org.apache.camel.model.dataformat.JacksonXMLDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "jaxb": {
                    org.apache.camel.model.dataformat.JaxbDataFormat val = asType(node, org.apache.camel.model.dataformat.JaxbDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "json": {
                    org.apache.camel.model.dataformat.JsonDataFormat val = asType(node, org.apache.camel.model.dataformat.JsonDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "json-api": {
                    org.apache.camel.model.dataformat.JsonApiDataFormat val = asType(node, org.apache.camel.model.dataformat.JsonApiDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "lzf": {
                    org.apache.camel.model.dataformat.LZFDataFormat val = asType(node, org.apache.camel.model.dataformat.LZFDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "mime-multipart": {
                    org.apache.camel.model.dataformat.MimeMultipartDataFormat val = asType(node, org.apache.camel.model.dataformat.MimeMultipartDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "protobuf": {
                    org.apache.camel.model.dataformat.ProtobufDataFormat val = asType(node, org.apache.camel.model.dataformat.ProtobufDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "rss": {
                    org.apache.camel.model.dataformat.RssDataFormat val = asType(node, org.apache.camel.model.dataformat.RssDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "soap": {
                    org.apache.camel.model.dataformat.SoapDataFormat val = asType(node, org.apache.camel.model.dataformat.SoapDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "swift-mt": {
                    org.apache.camel.model.dataformat.SwiftMtDataFormat val = asType(node, org.apache.camel.model.dataformat.SwiftMtDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "swift-mx": {
                    org.apache.camel.model.dataformat.SwiftMxDataFormat val = asType(node, org.apache.camel.model.dataformat.SwiftMxDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "syslog": {
                    org.apache.camel.model.dataformat.SyslogDataFormat val = asType(node, org.apache.camel.model.dataformat.SyslogDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "tar-file": {
                    org.apache.camel.model.dataformat.TarFileDataFormat val = asType(node, org.apache.camel.model.dataformat.TarFileDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "thrift": {
                    org.apache.camel.model.dataformat.ThriftDataFormat val = asType(node, org.apache.camel.model.dataformat.ThriftDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "tidy-markup": {
                    org.apache.camel.model.dataformat.TidyMarkupDataFormat val = asType(node, org.apache.camel.model.dataformat.TidyMarkupDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "univocity-csv": {
                    org.apache.camel.model.dataformat.UniVocityCsvDataFormat val = asType(node, org.apache.camel.model.dataformat.UniVocityCsvDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "univocity-fixed": {
                    org.apache.camel.model.dataformat.UniVocityFixedDataFormat val = asType(node, org.apache.camel.model.dataformat.UniVocityFixedDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "univocity-tsv": {
                    org.apache.camel.model.dataformat.UniVocityTsvDataFormat val = asType(node, org.apache.camel.model.dataformat.UniVocityTsvDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "xml-security": {
                    org.apache.camel.model.dataformat.XMLSecurityDataFormat val = asType(node, org.apache.camel.model.dataformat.XMLSecurityDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "xstream": {
                    org.apache.camel.model.dataformat.XStreamDataFormat val = asType(node, org.apache.camel.model.dataformat.XStreamDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "pgp": {
                    org.apache.camel.model.dataformat.PGPDataFormat val = asType(node, org.apache.camel.model.dataformat.PGPDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "yaml": {
                    org.apache.camel.model.dataformat.YAMLDataFormat val = asType(node, org.apache.camel.model.dataformat.YAMLDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "zip-deflater": {
                    org.apache.camel.model.dataformat.ZipDeflaterDataFormat val = asType(node, org.apache.camel.model.dataformat.ZipDeflaterDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "zip-file": {
                    org.apache.camel.model.dataformat.ZipFileDataFormat val = asType(node, org.apache.camel.model.dataformat.ZipFileDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "method",
            inline = true,
            types = org.apache.camel.model.language.MethodCallExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "bean-type", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "method", type = "string"),
                    @YamlProperty(name = "ref", type = "string"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "scope", type = "enum:Singleton,Request,Prototype"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class MethodCallExpressionDeserializer extends YamlDeserializerBase {
        public MethodCallExpressionDeserializer() {
            super(MethodCallExpression.class);
        }

        @Override
        protected MethodCallExpression newInstance() {
            return new MethodCallExpression();
        }

        @Override
        protected MethodCallExpression newInstance(String value) {
            return new MethodCallExpression(value);
        }

        @Override
        protected boolean setProperty(MethodCallExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "bean-type": {
                    String val = asText(node);
                    target.setBeanTypeName(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "method": {
                    String val = asText(node);
                    target.setMethod(val);
                    break;
                }
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "scope": {
                    String val = asText(node);
                    target.setScope(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "mime-multipart",
                    "mimeMultipart"
            },
            types = org.apache.camel.model.dataformat.MimeMultipartDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "binary-content", type = "boolean"),
                    @YamlProperty(name = "headers-inline", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "include-headers", type = "string"),
                    @YamlProperty(name = "multipart-sub-type", type = "string"),
                    @YamlProperty(name = "multipart-without-attachment", type = "boolean")
            }
    )
    public static class MimeMultipartDataFormatDeserializer extends YamlDeserializerBase {
        public MimeMultipartDataFormatDeserializer() {
            super(MimeMultipartDataFormat.class);
        }

        @Override
        protected MimeMultipartDataFormat newInstance() {
            return new MimeMultipartDataFormat();
        }

        @Override
        protected boolean setProperty(MimeMultipartDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "binary-content": {
                    String val = asText(node);
                    target.setBinaryContent(val);
                    break;
                }
                case "headers-inline": {
                    String val = asText(node);
                    target.setHeadersInline(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "include-headers": {
                    String val = asText(node);
                    target.setIncludeHeaders(val);
                    break;
                }
                case "multipart-sub-type": {
                    String val = asText(node);
                    target.setMultipartSubType(val);
                    break;
                }
                case "multipart-without-attachment": {
                    String val = asText(node);
                    target.setMultipartWithoutAttachment(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "multicast",
            types = org.apache.camel.model.MulticastDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "aggregation-strategy", type = "string"),
                    @YamlProperty(name = "aggregation-strategy-method-allow-null", type = "boolean"),
                    @YamlProperty(name = "aggregation-strategy-method-name", type = "string"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "executor-service", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "on-prepare", type = "string"),
                    @YamlProperty(name = "parallel-aggregate", type = "boolean"),
                    @YamlProperty(name = "parallel-processing", type = "boolean"),
                    @YamlProperty(name = "share-unit-of-work", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition"),
                    @YamlProperty(name = "stop-on-exception", type = "boolean"),
                    @YamlProperty(name = "streaming", type = "boolean"),
                    @YamlProperty(name = "synchronous", type = "boolean"),
                    @YamlProperty(name = "timeout", type = "string")
            }
    )
    public static class MulticastDefinitionDeserializer extends YamlDeserializerBase {
        public MulticastDefinitionDeserializer() {
            super(MulticastDefinition.class);
        }

        @Override
        protected MulticastDefinition newInstance() {
            return new MulticastDefinition();
        }

        @Override
        protected boolean setProperty(MulticastDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "aggregation-strategy": {
                    String val = asText(node);
                    target.setAggregationStrategy(val);
                    break;
                }
                case "aggregation-strategy-method-allow-null": {
                    String val = asText(node);
                    target.setAggregationStrategyMethodAllowNull(val);
                    break;
                }
                case "aggregation-strategy-method-name": {
                    String val = asText(node);
                    target.setAggregationStrategyMethodName(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "executor-service": {
                    String val = asText(node);
                    target.setExecutorService(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "on-prepare": {
                    String val = asText(node);
                    target.setOnPrepare(val);
                    break;
                }
                case "parallel-aggregate": {
                    String val = asText(node);
                    target.setParallelAggregate(val);
                    break;
                }
                case "parallel-processing": {
                    String val = asText(node);
                    target.setParallelProcessing(val);
                    break;
                }
                case "share-unit-of-work": {
                    String val = asText(node);
                    target.setShareUnitOfWork(val);
                    break;
                }
                case "stop-on-exception": {
                    String val = asText(node);
                    target.setStopOnException(val);
                    break;
                }
                case "streaming": {
                    String val = asText(node);
                    target.setStreaming(val);
                    break;
                }
                case "synchronous": {
                    String val = asText(node);
                    target.setSynchronous(val);
                    break;
                }
                case "timeout": {
                    String val = asText(node);
                    target.setTimeout(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "mutual-tls",
                    "mutualTLS"
            },
            types = org.apache.camel.model.rest.MutualTLSDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "key", type = "string", required = true)
            }
    )
    public static class MutualTLSDefinitionDeserializer extends YamlDeserializerBase {
        public MutualTLSDefinitionDeserializer() {
            super(MutualTLSDefinition.class);
        }

        @Override
        protected MutualTLSDefinition newInstance() {
            return new MutualTLSDefinition();
        }

        @Override
        protected boolean setProperty(MutualTLSDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "description": {
                    String val = asText(node);
                    target.setDescription(val);
                    break;
                }
                case "key": {
                    String val = asText(node);
                    target.setKey(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "mvel",
            inline = true,
            types = org.apache.camel.model.language.MvelExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class MvelExpressionDeserializer extends YamlDeserializerBase {
        public MvelExpressionDeserializer() {
            super(MvelExpression.class);
        }

        @Override
        protected MvelExpression newInstance() {
            return new MvelExpression();
        }

        @Override
        protected MvelExpression newInstance(String value) {
            return new MvelExpression(value);
        }

        @Override
        protected boolean setProperty(MvelExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "no-error-handler",
                    "noErrorHandler"
            },
            types = org.apache.camel.model.errorhandler.NoErrorHandlerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = @YamlProperty(name = "id", type = "string")
    )
    public static class NoErrorHandlerDefinitionDeserializer extends YamlDeserializerBase {
        public NoErrorHandlerDefinitionDeserializer() {
            super(NoErrorHandlerDefinition.class);
        }

        @Override
        protected NoErrorHandlerDefinition newInstance() {
            return new NoErrorHandlerDefinition();
        }

        @Override
        protected boolean setProperty(NoErrorHandlerDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "oauth2",
            types = org.apache.camel.model.rest.OAuth2Definition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "authorization-url", type = "string"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "flow", type = "enum:implicit,password,application,clientCredentials,accessCode,authorizationCode"),
                    @YamlProperty(name = "key", type = "string", required = true),
                    @YamlProperty(name = "refresh-url", type = "string"),
                    @YamlProperty(name = "scopes", type = "array:org.apache.camel.model.rest.RestPropertyDefinition"),
                    @YamlProperty(name = "token-url", type = "string")
            }
    )
    public static class OAuth2DefinitionDeserializer extends YamlDeserializerBase {
        public OAuth2DefinitionDeserializer() {
            super(OAuth2Definition.class);
        }

        @Override
        protected OAuth2Definition newInstance() {
            return new OAuth2Definition();
        }

        @Override
        protected boolean setProperty(OAuth2Definition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "authorization-url": {
                    String val = asText(node);
                    target.setAuthorizationUrl(val);
                    break;
                }
                case "description": {
                    String val = asText(node);
                    target.setDescription(val);
                    break;
                }
                case "flow": {
                    String val = asText(node);
                    target.setFlow(val);
                    break;
                }
                case "key": {
                    String val = asText(node);
                    target.setKey(val);
                    break;
                }
                case "refresh-url": {
                    String val = asText(node);
                    target.setRefreshUrl(val);
                    break;
                }
                case "scopes": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.RestPropertyDefinition.class);
                    target.setScopes(val);
                    break;
                }
                case "token-url": {
                    String val = asText(node);
                    target.setTokenUrl(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "ognl",
            inline = true,
            types = org.apache.camel.model.language.OgnlExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class OgnlExpressionDeserializer extends YamlDeserializerBase {
        public OgnlExpressionDeserializer() {
            super(OgnlExpression.class);
        }

        @Override
        protected OgnlExpression newInstance() {
            return new OgnlExpression();
        }

        @Override
        protected OgnlExpression newInstance(String value) {
            return new OgnlExpression(value);
        }

        @Override
        protected boolean setProperty(OgnlExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "on-completion",
                    "onCompletion"
            },
            types = org.apache.camel.model.OnCompletionDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "executor-service", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "mode", type = "enum:AfterConsumer,BeforeConsumer"),
                    @YamlProperty(name = "on-complete-only", type = "boolean"),
                    @YamlProperty(name = "on-failure-only", type = "boolean"),
                    @YamlProperty(name = "on-when", type = "object:org.apache.camel.model.WhenDefinition"),
                    @YamlProperty(name = "parallel-processing", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition"),
                    @YamlProperty(name = "use-original-message", type = "boolean")
            }
    )
    public static class OnCompletionDefinitionDeserializer extends YamlDeserializerBase {
        public OnCompletionDefinitionDeserializer() {
            super(OnCompletionDefinition.class);
        }

        @Override
        protected OnCompletionDefinition newInstance() {
            return new OnCompletionDefinition();
        }

        @Override
        protected boolean setProperty(OnCompletionDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "executor-service": {
                    String val = asText(node);
                    target.setExecutorService(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "mode": {
                    String val = asText(node);
                    target.setMode(val);
                    break;
                }
                case "on-complete-only": {
                    String val = asText(node);
                    target.setOnCompleteOnly(val);
                    break;
                }
                case "on-failure-only": {
                    String val = asText(node);
                    target.setOnFailureOnly(val);
                    break;
                }
                case "on-when": {
                    org.apache.camel.model.WhenDefinition val = asType(node, org.apache.camel.model.WhenDefinition.class);
                    target.setOnWhen(val);
                    break;
                }
                case "parallel-processing": {
                    String val = asText(node);
                    target.setParallelProcessing(val);
                    break;
                }
                case "use-original-message": {
                    String val = asText(node);
                    target.setUseOriginalMessage(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlIn
    @YamlType(
            nodes = {
                    "on-exception",
                    "onException"
            },
            types = org.apache.camel.model.OnExceptionDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "continued", type = "object:org.apache.camel.model.ExpressionSubElementDefinition"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "exception", type = "array:string"),
                    @YamlProperty(name = "handled", type = "object:org.apache.camel.model.ExpressionSubElementDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "on-exception-occurred-ref", type = "string"),
                    @YamlProperty(name = "on-redelivery-ref", type = "string"),
                    @YamlProperty(name = "on-when", type = "object:org.apache.camel.model.WhenDefinition"),
                    @YamlProperty(name = "redelivery-policy", type = "object:org.apache.camel.model.RedeliveryPolicyDefinition"),
                    @YamlProperty(name = "redelivery-policy-ref", type = "string"),
                    @YamlProperty(name = "retry-while", type = "object:org.apache.camel.model.ExpressionSubElementDefinition"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition"),
                    @YamlProperty(name = "use-original-body", type = "boolean"),
                    @YamlProperty(name = "use-original-message", type = "boolean")
            }
    )
    public static class OnExceptionDefinitionDeserializer extends YamlDeserializerBase {
        public OnExceptionDefinitionDeserializer() {
            super(OnExceptionDefinition.class);
        }

        @Override
        protected OnExceptionDefinition newInstance() {
            return new OnExceptionDefinition();
        }

        @Override
        protected boolean setProperty(OnExceptionDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "continued": {
                    org.apache.camel.model.ExpressionSubElementDefinition val = asType(node, org.apache.camel.model.ExpressionSubElementDefinition.class);
                    target.setContinued(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "exception": {
                    java.util.List val = asStringList(node);
                    target.setExceptions(val);
                    break;
                }
                case "handled": {
                    org.apache.camel.model.ExpressionSubElementDefinition val = asType(node, org.apache.camel.model.ExpressionSubElementDefinition.class);
                    target.setHandled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "on-exception-occurred-ref": {
                    String val = asText(node);
                    target.setOnExceptionOccurredRef(val);
                    break;
                }
                case "on-redelivery-ref": {
                    String val = asText(node);
                    target.setOnRedeliveryRef(val);
                    break;
                }
                case "on-when": {
                    org.apache.camel.model.WhenDefinition val = asType(node, org.apache.camel.model.WhenDefinition.class);
                    target.setOnWhen(val);
                    break;
                }
                case "redelivery-policy-ref": {
                    String val = asText(node);
                    target.setRedeliveryPolicyRef(val);
                    break;
                }
                case "redelivery-policy": {
                    org.apache.camel.model.RedeliveryPolicyDefinition val = asType(node, org.apache.camel.model.RedeliveryPolicyDefinition.class);
                    target.setRedeliveryPolicyType(val);
                    break;
                }
                case "retry-while": {
                    org.apache.camel.model.ExpressionSubElementDefinition val = asType(node, org.apache.camel.model.ExpressionSubElementDefinition.class);
                    target.setRetryWhile(val);
                    break;
                }
                case "use-original-body": {
                    String val = asText(node);
                    target.setUseOriginalBody(val);
                    break;
                }
                case "use-original-message": {
                    String val = asText(node);
                    target.setUseOriginalMessage(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "on-fallback",
                    "onFallback"
            },
            types = org.apache.camel.model.OnFallbackDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "fallback-via-network", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class OnFallbackDefinitionDeserializer extends YamlDeserializerBase {
        public OnFallbackDefinitionDeserializer() {
            super(OnFallbackDefinition.class);
        }

        @Override
        protected OnFallbackDefinition newInstance() {
            return new OnFallbackDefinition();
        }

        @Override
        protected boolean setProperty(OnFallbackDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "fallback-via-network": {
                    String val = asText(node);
                    target.setFallbackViaNetwork(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "open-id-connect",
                    "openIdConnect"
            },
            types = org.apache.camel.model.rest.OpenIdConnectDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "key", type = "string", required = true),
                    @YamlProperty(name = "url", type = "string", required = true)
            }
    )
    public static class OpenIdConnectDefinitionDeserializer extends YamlDeserializerBase {
        public OpenIdConnectDefinitionDeserializer() {
            super(OpenIdConnectDefinition.class);
        }

        @Override
        protected OpenIdConnectDefinition newInstance() {
            return new OpenIdConnectDefinition();
        }

        @Override
        protected boolean setProperty(OpenIdConnectDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "description": {
                    String val = asText(node);
                    target.setDescription(val);
                    break;
                }
                case "key": {
                    String val = asText(node);
                    target.setKey(val);
                    break;
                }
                case "url": {
                    String val = asText(node);
                    target.setUrl(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "optimistic-lock-retry-policy",
                    "optimisticLockRetryPolicy"
            },
            types = org.apache.camel.model.OptimisticLockRetryPolicyDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "exponential-back-off", type = "boolean"),
                    @YamlProperty(name = "maximum-retries", type = "number"),
                    @YamlProperty(name = "maximum-retry-delay", type = "string"),
                    @YamlProperty(name = "random-back-off", type = "boolean"),
                    @YamlProperty(name = "retry-delay", type = "string")
            }
    )
    public static class OptimisticLockRetryPolicyDefinitionDeserializer extends YamlDeserializerBase {
        public OptimisticLockRetryPolicyDefinitionDeserializer() {
            super(OptimisticLockRetryPolicyDefinition.class);
        }

        @Override
        protected OptimisticLockRetryPolicyDefinition newInstance() {
            return new OptimisticLockRetryPolicyDefinition();
        }

        @Override
        protected boolean setProperty(OptimisticLockRetryPolicyDefinition target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "exponential-back-off": {
                    String val = asText(node);
                    target.setExponentialBackOff(val);
                    break;
                }
                case "maximum-retries": {
                    String val = asText(node);
                    target.setMaximumRetries(val);
                    break;
                }
                case "maximum-retry-delay": {
                    String val = asText(node);
                    target.setMaximumRetryDelay(val);
                    break;
                }
                case "random-back-off": {
                    String val = asText(node);
                    target.setRandomBackOff(val);
                    break;
                }
                case "retry-delay": {
                    String val = asText(node);
                    target.setRetryDelay(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "otherwise",
            types = org.apache.camel.model.OtherwiseDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class OtherwiseDefinitionDeserializer extends YamlDeserializerBase {
        public OtherwiseDefinitionDeserializer() {
            super(OtherwiseDefinition.class);
        }

        @Override
        protected OtherwiseDefinition newInstance() {
            return new OtherwiseDefinition();
        }

        @Override
        protected boolean setProperty(OtherwiseDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            types = org.apache.camel.model.OutputDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class OutputDefinitionDeserializer extends YamlDeserializerBase {
        public OutputDefinitionDeserializer() {
            super(OutputDefinition.class);
        }

        @Override
        protected OutputDefinition newInstance() {
            return new OutputDefinition();
        }

        @Override
        protected boolean setProperty(OutputDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "output-type",
                    "outputType"
            },
            types = org.apache.camel.model.OutputTypeDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "urn", type = "string", required = true),
                    @YamlProperty(name = "validate", type = "boolean")
            }
    )
    public static class OutputTypeDefinitionDeserializer extends YamlDeserializerBase {
        public OutputTypeDefinitionDeserializer() {
            super(OutputTypeDefinition.class);
        }

        @Override
        protected OutputTypeDefinition newInstance() {
            return new OutputTypeDefinition();
        }

        @Override
        protected boolean setProperty(OutputTypeDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "urn": {
                    String val = asText(node);
                    target.setUrn(val);
                    break;
                }
                case "validate": {
                    String val = asText(node);
                    target.setValidate(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "pgp",
            types = org.apache.camel.model.dataformat.PGPDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "algorithm", type = "number"),
                    @YamlProperty(name = "armored", type = "boolean"),
                    @YamlProperty(name = "compression-algorithm", type = "number"),
                    @YamlProperty(name = "hash-algorithm", type = "number"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "integrity", type = "boolean"),
                    @YamlProperty(name = "key-file-name", type = "string"),
                    @YamlProperty(name = "key-userid", type = "string"),
                    @YamlProperty(name = "password", type = "string"),
                    @YamlProperty(name = "provider", type = "string"),
                    @YamlProperty(name = "signature-key-file-name", type = "string"),
                    @YamlProperty(name = "signature-key-ring", type = "string"),
                    @YamlProperty(name = "signature-key-userid", type = "string"),
                    @YamlProperty(name = "signature-password", type = "string"),
                    @YamlProperty(name = "signature-verification-option", type = "string")
            }
    )
    public static class PGPDataFormatDeserializer extends YamlDeserializerBase {
        public PGPDataFormatDeserializer() {
            super(PGPDataFormat.class);
        }

        @Override
        protected PGPDataFormat newInstance() {
            return new PGPDataFormat();
        }

        @Override
        protected boolean setProperty(PGPDataFormat target, String propertyKey, String propertyName,
                Node node) {
            switch(propertyKey) {
                case "algorithm": {
                    String val = asText(node);
                    target.setAlgorithm(val);
                    break;
                }
                case "armored": {
                    String val = asText(node);
                    target.setArmored(val);
                    break;
                }
                case "compression-algorithm": {
                    String val = asText(node);
                    target.setCompressionAlgorithm(val);
                    break;
                }
                case "hash-algorithm": {
                    String val = asText(node);
                    target.setHashAlgorithm(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "integrity": {
                    String val = asText(node);
                    target.setIntegrity(val);
                    break;
                }
                case "key-file-name": {
                    String val = asText(node);
                    target.setKeyFileName(val);
                    break;
                }
                case "key-userid": {
                    String val = asText(node);
                    target.setKeyUserid(val);
                    break;
                }
                case "password": {
                    String val = asText(node);
                    target.setPassword(val);
                    break;
                }
                case "provider": {
                    String val = asText(node);
                    target.setProvider(val);
                    break;
                }
                case "signature-key-file-name": {
                    String val = asText(node);
                    target.setSignatureKeyFileName(val);
                    break;
                }
                case "signature-key-ring": {
                    String val = asText(node);
                    target.setSignatureKeyRing(val);
                    break;
                }
                case "signature-key-userid": {
                    String val = asText(node);
                    target.setSignatureKeyUserid(val);
                    break;
                }
                case "signature-password": {
                    String val = asText(node);
                    target.setSignaturePassword(val);
                    break;
                }
                case "signature-verification-option": {
                    String val = asText(node);
                    target.setSignatureVerificationOption(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "package-scan",
                    "packageScan"
            },
            types = org.apache.camel.model.PackageScanDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "excludes", type = "array:string"),
                    @YamlProperty(name = "includes", type = "array:string"),
                    @YamlProperty(name = "package", type = "array:string")
            }
    )
    public static class PackageScanDefinitionDeserializer extends YamlDeserializerBase {
        public PackageScanDefinitionDeserializer() {
            super(PackageScanDefinition.class);
        }

        @Override
        protected PackageScanDefinition newInstance() {
            return new PackageScanDefinition();
        }

        @Override
        protected boolean setProperty(PackageScanDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "excludes": {
                    java.util.List val = asStringList(node);
                    target.setExcludes(val);
                    break;
                }
                case "includes": {
                    java.util.List val = asStringList(node);
                    target.setIncludes(val);
                    break;
                }
                case "package": {
                    java.util.List val = asStringList(node);
                    target.setPackages(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "param",
            types = org.apache.camel.model.rest.ParamDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allowable-values", type = "array:org.apache.camel.model.ValueDefinition"),
                    @YamlProperty(name = "array-type", type = "string"),
                    @YamlProperty(name = "collection-format", type = "enum:csv,multi,pipes,ssv,tsv"),
                    @YamlProperty(name = "data-format", type = "string"),
                    @YamlProperty(name = "data-type", type = "string"),
                    @YamlProperty(name = "default-value", type = "string"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "examples", type = "array:org.apache.camel.model.rest.RestPropertyDefinition"),
                    @YamlProperty(name = "name", type = "string", required = true),
                    @YamlProperty(name = "required", type = "boolean"),
                    @YamlProperty(name = "type", type = "enum:body,formData,header,path,query", required = true)
            }
    )
    public static class ParamDefinitionDeserializer extends YamlDeserializerBase {
        public ParamDefinitionDeserializer() {
            super(ParamDefinition.class);
        }

        @Override
        protected ParamDefinition newInstance() {
            return new ParamDefinition();
        }

        @Override
        protected boolean setProperty(ParamDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allowable-values": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.ValueDefinition.class);
                    target.setAllowableValues(val);
                    break;
                }
                case "array-type": {
                    String val = asText(node);
                    target.setArrayType(val);
                    break;
                }
                case "collection-format": {
                    target.setCollectionFormat(asEnum(node, org.apache.camel.model.rest.CollectionFormat.class));
                    break;
                }
                case "data-format": {
                    String val = asText(node);
                    target.setDataFormat(val);
                    break;
                }
                case "data-type": {
                    String val = asText(node);
                    target.setDataType(val);
                    break;
                }
                case "default-value": {
                    String val = asText(node);
                    target.setDefaultValue(val);
                    break;
                }
                case "description": {
                    String val = asText(node);
                    target.setDescription(val);
                    break;
                }
                case "examples": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.RestPropertyDefinition.class);
                    target.setExamples(val);
                    break;
                }
                case "name": {
                    String val = asText(node);
                    target.setName(val);
                    break;
                }
                case "required": {
                    String val = asText(node);
                    target.setRequired(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "type": {
                    target.setType(asEnum(node, org.apache.camel.model.rest.RestParamType.class));
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "pass-through-service-filter",
                    "passThroughServiceFilter"
            },
            types = org.apache.camel.model.cloud.PassThroughServiceCallServiceFilterConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition")
            }
    )
    public static class PassThroughServiceCallServiceFilterConfigurationDeserializer extends YamlDeserializerBase {
        public PassThroughServiceCallServiceFilterConfigurationDeserializer() {
            super(PassThroughServiceCallServiceFilterConfiguration.class);
        }

        @Override
        protected PassThroughServiceCallServiceFilterConfiguration newInstance() {
            return new PassThroughServiceCallServiceFilterConfiguration();
        }

        @Override
        protected boolean setProperty(PassThroughServiceCallServiceFilterConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "patch",
            types = org.apache.camel.model.rest.PatchDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "api-docs", type = "boolean"),
                    @YamlProperty(name = "binding-mode", type = "enum:off,auto,json,xml,json_xml"),
                    @YamlProperty(name = "client-request-validation", type = "boolean"),
                    @YamlProperty(name = "consumes", type = "string"),
                    @YamlProperty(name = "deprecated", type = "boolean"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "enable-cors", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "out-type", type = "string"),
                    @YamlProperty(name = "param", type = "array:org.apache.camel.model.rest.ParamDefinition"),
                    @YamlProperty(name = "path", type = "string"),
                    @YamlProperty(name = "produces", type = "string"),
                    @YamlProperty(name = "response-message", type = "array:org.apache.camel.model.rest.ResponseMessageDefinition"),
                    @YamlProperty(name = "route-id", type = "string"),
                    @YamlProperty(name = "security", type = "array:org.apache.camel.model.rest.SecurityDefinition"),
                    @YamlProperty(name = "skip-binding-on-error-code", type = "boolean"),
                    @YamlProperty(name = "to", type = "object:org.apache.camel.model.ToDefinition"),
                    @YamlProperty(name = "type", type = "string")
            }
    )
    public static class PatchDefinitionDeserializer extends YamlDeserializerBase {
        public PatchDefinitionDeserializer() {
            super(PatchDefinition.class);
        }

        @Override
        protected PatchDefinition newInstance() {
            return new PatchDefinition();
        }

        @Override
        protected boolean setProperty(PatchDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "api-docs": {
                    String val = asText(node);
                    target.setApiDocs(val);
                    break;
                }
                case "binding-mode": {
                    String val = asText(node);
                    target.setBindingMode(val);
                    break;
                }
                case "client-request-validation": {
                    String val = asText(node);
                    target.setClientRequestValidation(val);
                    break;
                }
                case "consumes": {
                    String val = asText(node);
                    target.setConsumes(val);
                    break;
                }
                case "deprecated": {
                    String val = asText(node);
                    target.setDeprecated(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "enable-cors": {
                    String val = asText(node);
                    target.setEnableCORS(val);
                    break;
                }
                case "out-type": {
                    String val = asText(node);
                    target.setOutType(val);
                    break;
                }
                case "param": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.ParamDefinition.class);
                    target.setParams(val);
                    break;
                }
                case "path": {
                    String val = asText(node);
                    target.setPath(val);
                    break;
                }
                case "produces": {
                    String val = asText(node);
                    target.setProduces(val);
                    break;
                }
                case "response-message": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.ResponseMessageDefinition.class);
                    target.setResponseMsgs(val);
                    break;
                }
                case "route-id": {
                    String val = asText(node);
                    target.setRouteId(val);
                    break;
                }
                case "security": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.SecurityDefinition.class);
                    target.setSecurity(val);
                    break;
                }
                case "skip-binding-on-error-code": {
                    String val = asText(node);
                    target.setSkipBindingOnErrorCode(val);
                    break;
                }
                case "to": {
                    org.apache.camel.model.ToDefinition val = asType(node, org.apache.camel.model.ToDefinition.class);
                    target.setTo(val);
                    break;
                }
                case "type": {
                    String val = asText(node);
                    target.setType(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "pausable",
            types = org.apache.camel.model.PausableDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "consumer-listener", type = "string", required = true),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "until-check", type = "string", required = true)
            }
    )
    public static class PausableDefinitionDeserializer extends YamlDeserializerBase {
        public PausableDefinitionDeserializer() {
            super(PausableDefinition.class);
        }

        @Override
        protected PausableDefinition newInstance() {
            return new PausableDefinition();
        }

        @Override
        protected boolean setProperty(PausableDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "consumer-listener": {
                    String val = asText(node);
                    target.setConsumerListener(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "until-check": {
                    String val = asText(node);
                    target.setUntilCheck(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "pipeline",
            types = org.apache.camel.model.PipelineDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class PipelineDefinitionDeserializer extends YamlDeserializerBase {
        public PipelineDefinitionDeserializer() {
            super(PipelineDefinition.class);
        }

        @Override
        protected PipelineDefinition newInstance() {
            return new PipelineDefinition();
        }

        @Override
        protected boolean setProperty(PipelineDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "policy",
            types = org.apache.camel.model.PolicyDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "ref", type = "string", required = true),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class PolicyDefinitionDeserializer extends YamlDeserializerBase {
        public PolicyDefinitionDeserializer() {
            super(PolicyDefinition.class);
        }

        @Override
        protected PolicyDefinition newInstance() {
            return new PolicyDefinition();
        }

        @Override
        protected boolean setProperty(PolicyDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "poll-enrich",
                    "pollEnrich"
            },
            types = org.apache.camel.model.PollEnrichDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "aggregate-on-exception", type = "boolean"),
                    @YamlProperty(name = "aggregation-strategy", type = "string"),
                    @YamlProperty(name = "aggregation-strategy-method-allow-null", type = "string"),
                    @YamlProperty(name = "aggregation-strategy-method-name", type = "string"),
                    @YamlProperty(name = "cache-size", type = "number"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ignore-invalid-endpoint", type = "boolean"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "timeout", type = "string")
            }
    )
    public static class PollEnrichDefinitionDeserializer extends YamlDeserializerBase {
        public PollEnrichDefinitionDeserializer() {
            super(PollEnrichDefinition.class);
        }

        @Override
        protected PollEnrichDefinition newInstance() {
            return new PollEnrichDefinition();
        }

        @Override
        protected boolean setProperty(PollEnrichDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "aggregate-on-exception": {
                    String val = asText(node);
                    target.setAggregateOnException(val);
                    break;
                }
                case "aggregation-strategy": {
                    String val = asText(node);
                    target.setAggregationStrategy(val);
                    break;
                }
                case "aggregation-strategy-method-allow-null": {
                    String val = asText(node);
                    target.setAggregationStrategyMethodAllowNull(val);
                    break;
                }
                case "aggregation-strategy-method-name": {
                    String val = asText(node);
                    target.setAggregationStrategyMethodName(val);
                    break;
                }
                case "cache-size": {
                    String val = asText(node);
                    target.setCacheSize(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "ignore-invalid-endpoint": {
                    String val = asText(node);
                    target.setIgnoreInvalidEndpoint(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "timeout": {
                    String val = asText(node);
                    target.setTimeout(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "post",
            types = org.apache.camel.model.rest.PostDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "api-docs", type = "boolean"),
                    @YamlProperty(name = "binding-mode", type = "enum:off,auto,json,xml,json_xml"),
                    @YamlProperty(name = "client-request-validation", type = "boolean"),
                    @YamlProperty(name = "consumes", type = "string"),
                    @YamlProperty(name = "deprecated", type = "boolean"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "enable-cors", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "out-type", type = "string"),
                    @YamlProperty(name = "param", type = "array:org.apache.camel.model.rest.ParamDefinition"),
                    @YamlProperty(name = "path", type = "string"),
                    @YamlProperty(name = "produces", type = "string"),
                    @YamlProperty(name = "response-message", type = "array:org.apache.camel.model.rest.ResponseMessageDefinition"),
                    @YamlProperty(name = "route-id", type = "string"),
                    @YamlProperty(name = "security", type = "array:org.apache.camel.model.rest.SecurityDefinition"),
                    @YamlProperty(name = "skip-binding-on-error-code", type = "boolean"),
                    @YamlProperty(name = "to", type = "object:org.apache.camel.model.ToDefinition"),
                    @YamlProperty(name = "type", type = "string")
            }
    )
    public static class PostDefinitionDeserializer extends YamlDeserializerBase {
        public PostDefinitionDeserializer() {
            super(PostDefinition.class);
        }

        @Override
        protected PostDefinition newInstance() {
            return new PostDefinition();
        }

        @Override
        protected boolean setProperty(PostDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "api-docs": {
                    String val = asText(node);
                    target.setApiDocs(val);
                    break;
                }
                case "binding-mode": {
                    String val = asText(node);
                    target.setBindingMode(val);
                    break;
                }
                case "client-request-validation": {
                    String val = asText(node);
                    target.setClientRequestValidation(val);
                    break;
                }
                case "consumes": {
                    String val = asText(node);
                    target.setConsumes(val);
                    break;
                }
                case "deprecated": {
                    String val = asText(node);
                    target.setDeprecated(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "enable-cors": {
                    String val = asText(node);
                    target.setEnableCORS(val);
                    break;
                }
                case "out-type": {
                    String val = asText(node);
                    target.setOutType(val);
                    break;
                }
                case "param": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.ParamDefinition.class);
                    target.setParams(val);
                    break;
                }
                case "path": {
                    String val = asText(node);
                    target.setPath(val);
                    break;
                }
                case "produces": {
                    String val = asText(node);
                    target.setProduces(val);
                    break;
                }
                case "response-message": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.ResponseMessageDefinition.class);
                    target.setResponseMsgs(val);
                    break;
                }
                case "route-id": {
                    String val = asText(node);
                    target.setRouteId(val);
                    break;
                }
                case "security": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.SecurityDefinition.class);
                    target.setSecurity(val);
                    break;
                }
                case "skip-binding-on-error-code": {
                    String val = asText(node);
                    target.setSkipBindingOnErrorCode(val);
                    break;
                }
                case "to": {
                    org.apache.camel.model.ToDefinition val = asType(node, org.apache.camel.model.ToDefinition.class);
                    target.setTo(val);
                    break;
                }
                case "type": {
                    String val = asText(node);
                    target.setType(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            types = org.apache.camel.model.validator.PredicateValidatorDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "type", type = "string")
            }
    )
    public static class PredicateValidatorDefinitionDeserializer extends YamlDeserializerBase {
        public PredicateValidatorDefinitionDeserializer() {
            super(PredicateValidatorDefinition.class);
        }

        @Override
        protected PredicateValidatorDefinition newInstance() {
            return new PredicateValidatorDefinition();
        }

        @Override
        protected boolean setProperty(PredicateValidatorDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "type": {
                    String val = asText(node);
                    target.setType(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "process",
            types = org.apache.camel.model.ProcessDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "ref", type = "string", required = true)
            }
    )
    public static class ProcessDefinitionDeserializer extends YamlDeserializerBase {
        public ProcessDefinitionDeserializer() {
            super(ProcessDefinition.class);
        }

        @Override
        protected ProcessDefinition newInstance() {
            return new ProcessDefinition();
        }

        @Override
        protected boolean setProperty(ProcessDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "property",
            types = org.apache.camel.model.PropertyDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "key", type = "string", required = true),
                    @YamlProperty(name = "value", type = "string", required = true)
            }
    )
    public static class PropertyDefinitionDeserializer extends YamlDeserializerBase {
        public PropertyDefinitionDeserializer() {
            super(PropertyDefinition.class);
        }

        @Override
        protected PropertyDefinition newInstance() {
            return new PropertyDefinition();
        }

        @Override
        protected boolean setProperty(PropertyDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "key": {
                    String val = asText(node);
                    target.setKey(val);
                    break;
                }
                case "value": {
                    String val = asText(node);
                    target.setValue(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "property-expression",
                    "propertyExpression"
            },
            types = org.apache.camel.model.PropertyExpressionDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "key", type = "string", required = true)
            }
    )
    public static class PropertyExpressionDefinitionDeserializer extends YamlDeserializerBase {
        public PropertyExpressionDefinitionDeserializer() {
            super(PropertyExpressionDefinition.class);
        }

        @Override
        protected PropertyExpressionDefinition newInstance() {
            return new PropertyExpressionDefinition();
        }

        @Override
        protected boolean setProperty(PropertyExpressionDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "key": {
                    String val = asText(node);
                    target.setKey(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "protobuf",
            inline = true,
            types = org.apache.camel.model.dataformat.ProtobufDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-jms-type", type = "boolean"),
                    @YamlProperty(name = "allow-unmarshall-type", type = "boolean"),
                    @YamlProperty(name = "auto-discover-object-mapper", type = "boolean"),
                    @YamlProperty(name = "auto-discover-schema-resolver", type = "boolean"),
                    @YamlProperty(name = "collection-type", type = "string"),
                    @YamlProperty(name = "content-type-format", type = "enum:native,json"),
                    @YamlProperty(name = "content-type-header", type = "boolean"),
                    @YamlProperty(name = "disable-features", type = "string"),
                    @YamlProperty(name = "enable-features", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "include", type = "string"),
                    @YamlProperty(name = "instance-class", type = "string"),
                    @YamlProperty(name = "json-view", type = "string"),
                    @YamlProperty(name = "library", type = "enum:GoogleProtobuf,Jackson"),
                    @YamlProperty(name = "module-class-names", type = "string"),
                    @YamlProperty(name = "module-refs", type = "string"),
                    @YamlProperty(name = "object-mapper", type = "string"),
                    @YamlProperty(name = "schema-resolver", type = "string"),
                    @YamlProperty(name = "timezone", type = "string"),
                    @YamlProperty(name = "unmarshal-type", type = "string"),
                    @YamlProperty(name = "use-default-object-mapper", type = "boolean"),
                    @YamlProperty(name = "use-list", type = "boolean")
            }
    )
    public static class ProtobufDataFormatDeserializer extends YamlDeserializerBase {
        public ProtobufDataFormatDeserializer() {
            super(ProtobufDataFormat.class);
        }

        @Override
        protected ProtobufDataFormat newInstance() {
            return new ProtobufDataFormat();
        }

        @Override
        protected ProtobufDataFormat newInstance(String value) {
            return new ProtobufDataFormat(value);
        }

        @Override
        protected boolean setProperty(ProtobufDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-jms-type": {
                    String val = asText(node);
                    target.setAllowJmsType(val);
                    break;
                }
                case "allow-unmarshall-type": {
                    String val = asText(node);
                    target.setAllowUnmarshallType(val);
                    break;
                }
                case "auto-discover-object-mapper": {
                    String val = asText(node);
                    target.setAutoDiscoverObjectMapper(val);
                    break;
                }
                case "auto-discover-schema-resolver": {
                    String val = asText(node);
                    target.setAutoDiscoverSchemaResolver(val);
                    break;
                }
                case "collection-type": {
                    String val = asText(node);
                    target.setCollectionTypeName(val);
                    break;
                }
                case "content-type-format": {
                    String val = asText(node);
                    target.setContentTypeFormat(val);
                    break;
                }
                case "content-type-header": {
                    String val = asText(node);
                    target.setContentTypeHeader(val);
                    break;
                }
                case "disable-features": {
                    String val = asText(node);
                    target.setDisableFeatures(val);
                    break;
                }
                case "enable-features": {
                    String val = asText(node);
                    target.setEnableFeatures(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "include": {
                    String val = asText(node);
                    target.setInclude(val);
                    break;
                }
                case "instance-class": {
                    String val = asText(node);
                    target.setInstanceClass(val);
                    break;
                }
                case "json-view": {
                    String val = asText(node);
                    target.setJsonViewTypeName(val);
                    break;
                }
                case "library": {
                    target.setLibrary(asEnum(node, org.apache.camel.model.dataformat.ProtobufLibrary.class));
                    break;
                }
                case "module-class-names": {
                    String val = asText(node);
                    target.setModuleClassNames(val);
                    break;
                }
                case "module-refs": {
                    String val = asText(node);
                    target.setModuleRefs(val);
                    break;
                }
                case "object-mapper": {
                    String val = asText(node);
                    target.setObjectMapper(val);
                    break;
                }
                case "schema-resolver": {
                    String val = asText(node);
                    target.setSchemaResolver(val);
                    break;
                }
                case "timezone": {
                    String val = asText(node);
                    target.setTimezone(val);
                    break;
                }
                case "unmarshal-type": {
                    String val = asText(node);
                    target.setUnmarshalTypeName(val);
                    break;
                }
                case "use-default-object-mapper": {
                    String val = asText(node);
                    target.setUseDefaultObjectMapper(val);
                    break;
                }
                case "use-list": {
                    String val = asText(node);
                    target.setUseList(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "put",
            types = org.apache.camel.model.rest.PutDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "api-docs", type = "boolean"),
                    @YamlProperty(name = "binding-mode", type = "enum:off,auto,json,xml,json_xml"),
                    @YamlProperty(name = "client-request-validation", type = "boolean"),
                    @YamlProperty(name = "consumes", type = "string"),
                    @YamlProperty(name = "deprecated", type = "boolean"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "enable-cors", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "out-type", type = "string"),
                    @YamlProperty(name = "param", type = "array:org.apache.camel.model.rest.ParamDefinition"),
                    @YamlProperty(name = "path", type = "string"),
                    @YamlProperty(name = "produces", type = "string"),
                    @YamlProperty(name = "response-message", type = "array:org.apache.camel.model.rest.ResponseMessageDefinition"),
                    @YamlProperty(name = "route-id", type = "string"),
                    @YamlProperty(name = "security", type = "array:org.apache.camel.model.rest.SecurityDefinition"),
                    @YamlProperty(name = "skip-binding-on-error-code", type = "boolean"),
                    @YamlProperty(name = "to", type = "object:org.apache.camel.model.ToDefinition"),
                    @YamlProperty(name = "type", type = "string")
            }
    )
    public static class PutDefinitionDeserializer extends YamlDeserializerBase {
        public PutDefinitionDeserializer() {
            super(PutDefinition.class);
        }

        @Override
        protected PutDefinition newInstance() {
            return new PutDefinition();
        }

        @Override
        protected boolean setProperty(PutDefinition target, String propertyKey, String propertyName,
                Node node) {
            switch(propertyKey) {
                case "api-docs": {
                    String val = asText(node);
                    target.setApiDocs(val);
                    break;
                }
                case "binding-mode": {
                    String val = asText(node);
                    target.setBindingMode(val);
                    break;
                }
                case "client-request-validation": {
                    String val = asText(node);
                    target.setClientRequestValidation(val);
                    break;
                }
                case "consumes": {
                    String val = asText(node);
                    target.setConsumes(val);
                    break;
                }
                case "deprecated": {
                    String val = asText(node);
                    target.setDeprecated(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "enable-cors": {
                    String val = asText(node);
                    target.setEnableCORS(val);
                    break;
                }
                case "out-type": {
                    String val = asText(node);
                    target.setOutType(val);
                    break;
                }
                case "param": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.ParamDefinition.class);
                    target.setParams(val);
                    break;
                }
                case "path": {
                    String val = asText(node);
                    target.setPath(val);
                    break;
                }
                case "produces": {
                    String val = asText(node);
                    target.setProduces(val);
                    break;
                }
                case "response-message": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.ResponseMessageDefinition.class);
                    target.setResponseMsgs(val);
                    break;
                }
                case "route-id": {
                    String val = asText(node);
                    target.setRouteId(val);
                    break;
                }
                case "security": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.SecurityDefinition.class);
                    target.setSecurity(val);
                    break;
                }
                case "skip-binding-on-error-code": {
                    String val = asText(node);
                    target.setSkipBindingOnErrorCode(val);
                    break;
                }
                case "to": {
                    org.apache.camel.model.ToDefinition val = asType(node, org.apache.camel.model.ToDefinition.class);
                    target.setTo(val);
                    break;
                }
                case "type": {
                    String val = asText(node);
                    target.setType(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "python",
            inline = true,
            types = org.apache.camel.model.language.PythonExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class PythonExpressionDeserializer extends YamlDeserializerBase {
        public PythonExpressionDeserializer() {
            super(PythonExpression.class);
        }

        @Override
        protected PythonExpression newInstance() {
            return new PythonExpression();
        }

        @Override
        protected PythonExpression newInstance(String value) {
            return new PythonExpression(value);
        }

        @Override
        protected boolean setProperty(PythonExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "random",
            types = org.apache.camel.model.loadbalancer.RandomLoadBalancerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = @YamlProperty(name = "id", type = "string")
    )
    public static class RandomLoadBalancerDefinitionDeserializer extends YamlDeserializerBase {
        public RandomLoadBalancerDefinitionDeserializer() {
            super(RandomLoadBalancerDefinition.class);
        }

        @Override
        protected RandomLoadBalancerDefinition newInstance() {
            return new RandomLoadBalancerDefinition();
        }

        @Override
        protected boolean setProperty(RandomLoadBalancerDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "recipient-list",
                    "recipientList"
            },
            types = org.apache.camel.model.RecipientListDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "aggregation-strategy", type = "string"),
                    @YamlProperty(name = "aggregation-strategy-method-allow-null", type = "boolean"),
                    @YamlProperty(name = "aggregation-strategy-method-name", type = "string"),
                    @YamlProperty(name = "cache-size", type = "number"),
                    @YamlProperty(name = "delimiter", type = "string"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "executor-service", type = "string"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ignore-invalid-endpoints", type = "boolean"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "on-prepare", type = "string"),
                    @YamlProperty(name = "parallel-aggregate", type = "boolean"),
                    @YamlProperty(name = "parallel-processing", type = "boolean"),
                    @YamlProperty(name = "share-unit-of-work", type = "boolean"),
                    @YamlProperty(name = "stop-on-exception", type = "boolean"),
                    @YamlProperty(name = "streaming", type = "boolean"),
                    @YamlProperty(name = "synchronous", type = "boolean"),
                    @YamlProperty(name = "timeout", type = "string")
            }
    )
    public static class RecipientListDefinitionDeserializer extends YamlDeserializerBase {
        public RecipientListDefinitionDeserializer() {
            super(RecipientListDefinition.class);
        }

        @Override
        protected RecipientListDefinition newInstance() {
            return new RecipientListDefinition();
        }

        @Override
        protected boolean setProperty(RecipientListDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "aggregation-strategy": {
                    String val = asText(node);
                    target.setAggregationStrategy(val);
                    break;
                }
                case "aggregation-strategy-method-allow-null": {
                    String val = asText(node);
                    target.setAggregationStrategyMethodAllowNull(val);
                    break;
                }
                case "aggregation-strategy-method-name": {
                    String val = asText(node);
                    target.setAggregationStrategyMethodName(val);
                    break;
                }
                case "cache-size": {
                    String val = asText(node);
                    target.setCacheSize(val);
                    break;
                }
                case "delimiter": {
                    String val = asText(node);
                    target.setDelimiter(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "executor-service": {
                    String val = asText(node);
                    target.setExecutorService(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "ignore-invalid-endpoints": {
                    String val = asText(node);
                    target.setIgnoreInvalidEndpoints(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "on-prepare": {
                    String val = asText(node);
                    target.setOnPrepare(val);
                    break;
                }
                case "parallel-aggregate": {
                    String val = asText(node);
                    target.setParallelAggregate(val);
                    break;
                }
                case "parallel-processing": {
                    String val = asText(node);
                    target.setParallelProcessing(val);
                    break;
                }
                case "share-unit-of-work": {
                    String val = asText(node);
                    target.setShareUnitOfWork(val);
                    break;
                }
                case "stop-on-exception": {
                    String val = asText(node);
                    target.setStopOnException(val);
                    break;
                }
                case "streaming": {
                    String val = asText(node);
                    target.setStreaming(val);
                    break;
                }
                case "synchronous": {
                    String val = asText(node);
                    target.setSynchronous(val);
                    break;
                }
                case "timeout": {
                    String val = asText(node);
                    target.setTimeout(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "redelivery-policy",
                    "redeliveryPolicy"
            },
            types = org.apache.camel.model.RedeliveryPolicyDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-redelivery-while-stopping", type = "boolean"),
                    @YamlProperty(name = "async-delayed-redelivery", type = "boolean"),
                    @YamlProperty(name = "back-off-multiplier", type = "number"),
                    @YamlProperty(name = "collision-avoidance-factor", type = "number"),
                    @YamlProperty(name = "delay-pattern", type = "string"),
                    @YamlProperty(name = "disable-redelivery", type = "boolean"),
                    @YamlProperty(name = "exchange-formatter-ref", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "log-continued", type = "boolean"),
                    @YamlProperty(name = "log-exhausted", type = "boolean"),
                    @YamlProperty(name = "log-exhausted-message-body", type = "boolean"),
                    @YamlProperty(name = "log-exhausted-message-history", type = "boolean"),
                    @YamlProperty(name = "log-handled", type = "boolean"),
                    @YamlProperty(name = "log-new-exception", type = "boolean"),
                    @YamlProperty(name = "log-retry-attempted", type = "boolean"),
                    @YamlProperty(name = "log-retry-stack-trace", type = "boolean"),
                    @YamlProperty(name = "log-stack-trace", type = "boolean"),
                    @YamlProperty(name = "maximum-redeliveries", type = "number"),
                    @YamlProperty(name = "maximum-redelivery-delay", type = "string"),
                    @YamlProperty(name = "redelivery-delay", type = "string"),
                    @YamlProperty(name = "retries-exhausted-log-level", type = "string"),
                    @YamlProperty(name = "retry-attempted-log-interval", type = "number"),
                    @YamlProperty(name = "retry-attempted-log-level", type = "string"),
                    @YamlProperty(name = "use-collision-avoidance", type = "boolean"),
                    @YamlProperty(name = "use-exponential-back-off", type = "boolean")
            }
    )
    public static class RedeliveryPolicyDefinitionDeserializer extends YamlDeserializerBase {
        public RedeliveryPolicyDefinitionDeserializer() {
            super(RedeliveryPolicyDefinition.class);
        }

        @Override
        protected RedeliveryPolicyDefinition newInstance() {
            return new RedeliveryPolicyDefinition();
        }

        @Override
        protected boolean setProperty(RedeliveryPolicyDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-redelivery-while-stopping": {
                    String val = asText(node);
                    target.setAllowRedeliveryWhileStopping(val);
                    break;
                }
                case "async-delayed-redelivery": {
                    String val = asText(node);
                    target.setAsyncDelayedRedelivery(val);
                    break;
                }
                case "back-off-multiplier": {
                    String val = asText(node);
                    target.setBackOffMultiplier(val);
                    break;
                }
                case "collision-avoidance-factor": {
                    String val = asText(node);
                    target.setCollisionAvoidanceFactor(val);
                    break;
                }
                case "delay-pattern": {
                    String val = asText(node);
                    target.setDelayPattern(val);
                    break;
                }
                case "disable-redelivery": {
                    String val = asText(node);
                    target.setDisableRedelivery(val);
                    break;
                }
                case "exchange-formatter-ref": {
                    String val = asText(node);
                    target.setExchangeFormatterRef(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "log-continued": {
                    String val = asText(node);
                    target.setLogContinued(val);
                    break;
                }
                case "log-exhausted": {
                    String val = asText(node);
                    target.setLogExhausted(val);
                    break;
                }
                case "log-exhausted-message-body": {
                    String val = asText(node);
                    target.setLogExhaustedMessageBody(val);
                    break;
                }
                case "log-exhausted-message-history": {
                    String val = asText(node);
                    target.setLogExhaustedMessageHistory(val);
                    break;
                }
                case "log-handled": {
                    String val = asText(node);
                    target.setLogHandled(val);
                    break;
                }
                case "log-new-exception": {
                    String val = asText(node);
                    target.setLogNewException(val);
                    break;
                }
                case "log-retry-attempted": {
                    String val = asText(node);
                    target.setLogRetryAttempted(val);
                    break;
                }
                case "log-retry-stack-trace": {
                    String val = asText(node);
                    target.setLogRetryStackTrace(val);
                    break;
                }
                case "log-stack-trace": {
                    String val = asText(node);
                    target.setLogStackTrace(val);
                    break;
                }
                case "maximum-redeliveries": {
                    String val = asText(node);
                    target.setMaximumRedeliveries(val);
                    break;
                }
                case "maximum-redelivery-delay": {
                    String val = asText(node);
                    target.setMaximumRedeliveryDelay(val);
                    break;
                }
                case "redelivery-delay": {
                    String val = asText(node);
                    target.setRedeliveryDelay(val);
                    break;
                }
                case "retries-exhausted-log-level": {
                    String val = asText(node);
                    target.setRetriesExhaustedLogLevel(val);
                    break;
                }
                case "retry-attempted-log-interval": {
                    String val = asText(node);
                    target.setRetryAttemptedLogInterval(val);
                    break;
                }
                case "retry-attempted-log-level": {
                    String val = asText(node);
                    target.setRetryAttemptedLogLevel(val);
                    break;
                }
                case "use-collision-avoidance": {
                    String val = asText(node);
                    target.setUseCollisionAvoidance(val);
                    break;
                }
                case "use-exponential-back-off": {
                    String val = asText(node);
                    target.setUseExponentialBackOff(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "ref-error-handler",
                    "refErrorHandler"
            },
            inline = true,
            types = org.apache.camel.model.errorhandler.RefErrorHandlerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ref", type = "string", required = true)
            }
    )
    public static class RefErrorHandlerDefinitionDeserializer extends YamlDeserializerBase {
        public RefErrorHandlerDefinitionDeserializer() {
            super(RefErrorHandlerDefinition.class);
        }

        @Override
        protected RefErrorHandlerDefinition newInstance() {
            return new RefErrorHandlerDefinition();
        }

        @Override
        protected RefErrorHandlerDefinition newInstance(String value) {
            return new RefErrorHandlerDefinition(value);
        }

        @Override
        protected boolean setProperty(RefErrorHandlerDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "ref",
            inline = true,
            types = org.apache.camel.model.language.RefExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class RefExpressionDeserializer extends YamlDeserializerBase {
        public RefExpressionDeserializer() {
            super(RefExpression.class);
        }

        @Override
        protected RefExpression newInstance() {
            return new RefExpression();
        }

        @Override
        protected RefExpression newInstance(String value) {
            return new RefExpression(value);
        }

        @Override
        protected boolean setProperty(RefExpression target, String propertyKey, String propertyName,
                Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "remove-header",
                    "removeHeader"
            },
            inline = true,
            types = org.apache.camel.model.RemoveHeaderDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "name", type = "string", required = true)
            }
    )
    public static class RemoveHeaderDefinitionDeserializer extends YamlDeserializerBase {
        public RemoveHeaderDefinitionDeserializer() {
            super(RemoveHeaderDefinition.class);
        }

        @Override
        protected RemoveHeaderDefinition newInstance() {
            return new RemoveHeaderDefinition();
        }

        @Override
        protected RemoveHeaderDefinition newInstance(String value) {
            return new RemoveHeaderDefinition(value);
        }

        @Override
        protected boolean setProperty(RemoveHeaderDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "name": {
                    String val = asText(node);
                    target.setName(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "remove-headers",
                    "removeHeaders"
            },
            inline = true,
            types = org.apache.camel.model.RemoveHeadersDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "exclude-pattern", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "pattern", type = "string", required = true)
            }
    )
    public static class RemoveHeadersDefinitionDeserializer extends YamlDeserializerBase {
        public RemoveHeadersDefinitionDeserializer() {
            super(RemoveHeadersDefinition.class);
        }

        @Override
        protected RemoveHeadersDefinition newInstance() {
            return new RemoveHeadersDefinition();
        }

        @Override
        protected RemoveHeadersDefinition newInstance(String value) {
            return new RemoveHeadersDefinition(value);
        }

        @Override
        protected boolean setProperty(RemoveHeadersDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "exclude-pattern": {
                    String val = asText(node);
                    target.setExcludePattern(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "pattern": {
                    String val = asText(node);
                    target.setPattern(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "remove-properties",
                    "removeProperties"
            },
            inline = true,
            types = org.apache.camel.model.RemovePropertiesDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "exclude-pattern", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "pattern", type = "string", required = true)
            }
    )
    public static class RemovePropertiesDefinitionDeserializer extends YamlDeserializerBase {
        public RemovePropertiesDefinitionDeserializer() {
            super(RemovePropertiesDefinition.class);
        }

        @Override
        protected RemovePropertiesDefinition newInstance() {
            return new RemovePropertiesDefinition();
        }

        @Override
        protected RemovePropertiesDefinition newInstance(String value) {
            return new RemovePropertiesDefinition(value);
        }

        @Override
        protected boolean setProperty(RemovePropertiesDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "exclude-pattern": {
                    String val = asText(node);
                    target.setExcludePattern(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "pattern": {
                    String val = asText(node);
                    target.setPattern(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "remove-property",
                    "removeProperty"
            },
            inline = true,
            types = org.apache.camel.model.RemovePropertyDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "name", type = "string", required = true)
            }
    )
    public static class RemovePropertyDefinitionDeserializer extends YamlDeserializerBase {
        public RemovePropertyDefinitionDeserializer() {
            super(RemovePropertyDefinition.class);
        }

        @Override
        protected RemovePropertyDefinition newInstance() {
            return new RemovePropertyDefinition();
        }

        @Override
        protected RemovePropertyDefinition newInstance(String value) {
            return new RemovePropertyDefinition(value);
        }

        @Override
        protected boolean setProperty(RemovePropertyDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "name": {
                    String val = asText(node);
                    target.setName(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "resequence",
            types = org.apache.camel.model.ResequenceDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "batch-config", type = "object:org.apache.camel.model.config.BatchResequencerConfig"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition", required = true),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition"),
                    @YamlProperty(name = "stream-config", type = "object:org.apache.camel.model.config.StreamResequencerConfig")
            }
    )
    public static class ResequenceDefinitionDeserializer extends YamlDeserializerBase {
        public ResequenceDefinitionDeserializer() {
            super(ResequenceDefinition.class);
        }

        @Override
        protected ResequenceDefinition newInstance() {
            return new ResequenceDefinition();
        }

        @Override
        protected boolean setProperty(ResequenceDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "resequencer-config": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "batch-config": {
                    org.apache.camel.model.config.BatchResequencerConfig val = asType(node, org.apache.camel.model.config.BatchResequencerConfig.class);
                    target.setResequencerConfig(val);
                    break;
                }
                case "stream-config": {
                    org.apache.camel.model.config.StreamResequencerConfig val = asType(node, org.apache.camel.model.config.StreamResequencerConfig.class);
                    target.setResequencerConfig(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "resilience4j-configuration",
                    "resilience4jConfiguration"
            },
            types = org.apache.camel.model.Resilience4jConfigurationDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "automatic-transition-from-open-to-half-open-enabled", type = "boolean"),
                    @YamlProperty(name = "circuit-breaker", type = "string"),
                    @YamlProperty(name = "config", type = "string"),
                    @YamlProperty(name = "failure-rate-threshold", type = "number"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "minimum-number-of-calls", type = "number"),
                    @YamlProperty(name = "permitted-number-of-calls-in-half-open-state", type = "number"),
                    @YamlProperty(name = "sliding-window-size", type = "number"),
                    @YamlProperty(name = "sliding-window-type", type = "enum:TIME_BASED,COUNT_BASED"),
                    @YamlProperty(name = "slow-call-duration-threshold", type = "number"),
                    @YamlProperty(name = "slow-call-rate-threshold", type = "number"),
                    @YamlProperty(name = "throw-exception-when-half-open-or-open-state", type = "boolean"),
                    @YamlProperty(name = "wait-duration-in-open-state", type = "number"),
                    @YamlProperty(name = "writable-stack-trace-enabled", type = "boolean")
            }
    )
    public static class Resilience4jConfigurationDefinitionDeserializer extends YamlDeserializerBase {
        public Resilience4jConfigurationDefinitionDeserializer() {
            super(Resilience4jConfigurationDefinition.class);
        }

        @Override
        protected Resilience4jConfigurationDefinition newInstance() {
            return new Resilience4jConfigurationDefinition();
        }

        @Override
        protected boolean setProperty(Resilience4jConfigurationDefinition target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "automatic-transition-from-open-to-half-open-enabled": {
                    String val = asText(node);
                    target.setAutomaticTransitionFromOpenToHalfOpenEnabled(val);
                    break;
                }
                case "circuit-breaker": {
                    String val = asText(node);
                    target.setCircuitBreaker(val);
                    break;
                }
                case "config": {
                    String val = asText(node);
                    target.setConfig(val);
                    break;
                }
                case "failure-rate-threshold": {
                    String val = asText(node);
                    target.setFailureRateThreshold(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "minimum-number-of-calls": {
                    String val = asText(node);
                    target.setMinimumNumberOfCalls(val);
                    break;
                }
                case "permitted-number-of-calls-in-half-open-state": {
                    String val = asText(node);
                    target.setPermittedNumberOfCallsInHalfOpenState(val);
                    break;
                }
                case "sliding-window-size": {
                    String val = asText(node);
                    target.setSlidingWindowSize(val);
                    break;
                }
                case "sliding-window-type": {
                    String val = asText(node);
                    target.setSlidingWindowType(val);
                    break;
                }
                case "slow-call-duration-threshold": {
                    String val = asText(node);
                    target.setSlowCallDurationThreshold(val);
                    break;
                }
                case "slow-call-rate-threshold": {
                    String val = asText(node);
                    target.setSlowCallRateThreshold(val);
                    break;
                }
                case "throw-exception-when-half-open-or-open-state": {
                    String val = asText(node);
                    target.setThrowExceptionWhenHalfOpenOrOpenState(val);
                    break;
                }
                case "wait-duration-in-open-state": {
                    String val = asText(node);
                    target.setWaitDurationInOpenState(val);
                    break;
                }
                case "writable-stack-trace-enabled": {
                    String val = asText(node);
                    target.setWritableStackTraceEnabled(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "response-header",
                    "responseHeader"
            },
            types = org.apache.camel.model.rest.ResponseHeaderDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allowable-values", type = "array:org.apache.camel.model.ValueDefinition"),
                    @YamlProperty(name = "array-type", type = "string"),
                    @YamlProperty(name = "collection-format", type = "enum:csv,multi,pipes,ssv,tsv"),
                    @YamlProperty(name = "data-format", type = "string"),
                    @YamlProperty(name = "data-type", type = "string"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "example", type = "string"),
                    @YamlProperty(name = "name", type = "string", required = true)
            }
    )
    public static class ResponseHeaderDefinitionDeserializer extends YamlDeserializerBase {
        public ResponseHeaderDefinitionDeserializer() {
            super(ResponseHeaderDefinition.class);
        }

        @Override
        protected ResponseHeaderDefinition newInstance() {
            return new ResponseHeaderDefinition();
        }

        @Override
        protected boolean setProperty(ResponseHeaderDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allowable-values": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.ValueDefinition.class);
                    target.setAllowableValues(val);
                    break;
                }
                case "array-type": {
                    String val = asText(node);
                    target.setArrayType(val);
                    break;
                }
                case "collection-format": {
                    target.setCollectionFormat(asEnum(node, org.apache.camel.model.rest.CollectionFormat.class));
                    break;
                }
                case "data-format": {
                    String val = asText(node);
                    target.setDataFormat(val);
                    break;
                }
                case "data-type": {
                    String val = asText(node);
                    target.setDataType(val);
                    break;
                }
                case "description": {
                    String val = asText(node);
                    target.setDescription(val);
                    break;
                }
                case "example": {
                    String val = asText(node);
                    target.setExample(val);
                    break;
                }
                case "name": {
                    String val = asText(node);
                    target.setName(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "response-message",
                    "responseMessage"
            },
            types = org.apache.camel.model.rest.ResponseMessageDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "code", type = "string"),
                    @YamlProperty(name = "examples", type = "array:org.apache.camel.model.rest.RestPropertyDefinition"),
                    @YamlProperty(name = "header", type = "array:org.apache.camel.model.rest.ResponseHeaderDefinition"),
                    @YamlProperty(name = "message", type = "string", required = true),
                    @YamlProperty(name = "response-model", type = "string")
            }
    )
    public static class ResponseMessageDefinitionDeserializer extends YamlDeserializerBase {
        public ResponseMessageDefinitionDeserializer() {
            super(ResponseMessageDefinition.class);
        }

        @Override
        protected ResponseMessageDefinition newInstance() {
            return new ResponseMessageDefinition();
        }

        @Override
        protected boolean setProperty(ResponseMessageDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "code": {
                    String val = asText(node);
                    target.setCode(val);
                    break;
                }
                case "examples": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.RestPropertyDefinition.class);
                    target.setExamples(val);
                    break;
                }
                case "header": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.ResponseHeaderDefinition.class);
                    target.setHeaders(val);
                    break;
                }
                case "message": {
                    String val = asText(node);
                    target.setMessage(val);
                    break;
                }
                case "response-model": {
                    String val = asText(node);
                    target.setResponseModel(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "rest-binding",
                    "restBinding"
            },
            types = org.apache.camel.model.rest.RestBindingDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "binding-mode", type = "enum:off,auto,json,xml,json_xml"),
                    @YamlProperty(name = "client-request-validation", type = "boolean"),
                    @YamlProperty(name = "component", type = "string"),
                    @YamlProperty(name = "consumes", type = "string"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "enable-cors", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "out-type", type = "string"),
                    @YamlProperty(name = "produces", type = "string"),
                    @YamlProperty(name = "skip-binding-on-error-code", type = "boolean"),
                    @YamlProperty(name = "type", type = "string")
            }
    )
    public static class RestBindingDefinitionDeserializer extends YamlDeserializerBase {
        public RestBindingDefinitionDeserializer() {
            super(RestBindingDefinition.class);
        }

        @Override
        protected RestBindingDefinition newInstance() {
            return new RestBindingDefinition();
        }

        @Override
        protected boolean setProperty(RestBindingDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "binding-mode": {
                    String val = asText(node);
                    target.setBindingMode(val);
                    break;
                }
                case "client-request-validation": {
                    String val = asText(node);
                    target.setClientRequestValidation(val);
                    break;
                }
                case "component": {
                    String val = asText(node);
                    target.setComponent(val);
                    break;
                }
                case "consumes": {
                    String val = asText(node);
                    target.setConsumes(val);
                    break;
                }
                case "enable-cors": {
                    String val = asText(node);
                    target.setEnableCORS(val);
                    break;
                }
                case "out-type": {
                    String val = asText(node);
                    target.setOutType(val);
                    break;
                }
                case "produces": {
                    String val = asText(node);
                    target.setProduces(val);
                    break;
                }
                case "skip-binding-on-error-code": {
                    String val = asText(node);
                    target.setSkipBindingOnErrorCode(val);
                    break;
                }
                case "type": {
                    String val = asText(node);
                    target.setType(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlIn
    @YamlType(
            nodes = {
                    "rest-configuration",
                    "restConfiguration"
            },
            types = org.apache.camel.model.rest.RestConfigurationDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "api-component", type = "enum:openapi,swagger"),
                    @YamlProperty(name = "api-context-path", type = "string"),
                    @YamlProperty(name = "api-context-route-id", type = "string"),
                    @YamlProperty(name = "api-host", type = "string"),
                    @YamlProperty(name = "api-property", type = "array:org.apache.camel.model.rest.RestPropertyDefinition"),
                    @YamlProperty(name = "api-vendor-extension", type = "boolean"),
                    @YamlProperty(name = "binding-mode", type = "enum:auto,json,json_xml,off,xml"),
                    @YamlProperty(name = "client-request-validation", type = "boolean"),
                    @YamlProperty(name = "component", type = "enum:platform-http,servlet,jetty,undertow,netty-http,coap"),
                    @YamlProperty(name = "component-property", type = "array:org.apache.camel.model.rest.RestPropertyDefinition"),
                    @YamlProperty(name = "consumer-property", type = "array:org.apache.camel.model.rest.RestPropertyDefinition"),
                    @YamlProperty(name = "context-path", type = "string"),
                    @YamlProperty(name = "cors-headers", type = "array:org.apache.camel.model.rest.RestPropertyDefinition"),
                    @YamlProperty(name = "data-format-property", type = "array:org.apache.camel.model.rest.RestPropertyDefinition"),
                    @YamlProperty(name = "enable-cors", type = "boolean"),
                    @YamlProperty(name = "endpoint-property", type = "array:org.apache.camel.model.rest.RestPropertyDefinition"),
                    @YamlProperty(name = "host", type = "string"),
                    @YamlProperty(name = "host-name-resolver", type = "enum:allLocalIp,localHostName,localIp"),
                    @YamlProperty(name = "inline-routes", type = "boolean"),
                    @YamlProperty(name = "json-data-format", type = "string"),
                    @YamlProperty(name = "port", type = "string"),
                    @YamlProperty(name = "producer-api-doc", type = "string"),
                    @YamlProperty(name = "producer-component", type = "enum:vertx-http,http,undertow,netty-http"),
                    @YamlProperty(name = "scheme", type = "string"),
                    @YamlProperty(name = "skip-binding-on-error-code", type = "boolean"),
                    @YamlProperty(name = "use-x-forward-headers", type = "boolean"),
                    @YamlProperty(name = "xml-data-format", type = "string")
            }
    )
    public static class RestConfigurationDefinitionDeserializer extends YamlDeserializerBase {
        public RestConfigurationDefinitionDeserializer() {
            super(RestConfigurationDefinition.class);
        }

        @Override
        protected RestConfigurationDefinition newInstance() {
            return new RestConfigurationDefinition();
        }

        @Override
        protected boolean setProperty(RestConfigurationDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "api-component": {
                    String val = asText(node);
                    target.setApiComponent(val);
                    break;
                }
                case "api-context-path": {
                    String val = asText(node);
                    target.setApiContextPath(val);
                    break;
                }
                case "api-context-route-id": {
                    String val = asText(node);
                    target.setApiContextRouteId(val);
                    break;
                }
                case "api-host": {
                    String val = asText(node);
                    target.setApiHost(val);
                    break;
                }
                case "api-property": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.RestPropertyDefinition.class);
                    target.setApiProperties(val);
                    break;
                }
                case "api-vendor-extension": {
                    String val = asText(node);
                    target.setApiVendorExtension(val);
                    break;
                }
                case "binding-mode": {
                    target.setBindingMode(asEnum(node, org.apache.camel.model.rest.RestBindingMode.class));
                    break;
                }
                case "client-request-validation": {
                    String val = asText(node);
                    target.setClientRequestValidation(val);
                    break;
                }
                case "component": {
                    String val = asText(node);
                    target.setComponent(val);
                    break;
                }
                case "component-property": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.RestPropertyDefinition.class);
                    target.setComponentProperties(val);
                    break;
                }
                case "consumer-property": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.RestPropertyDefinition.class);
                    target.setConsumerProperties(val);
                    break;
                }
                case "context-path": {
                    String val = asText(node);
                    target.setContextPath(val);
                    break;
                }
                case "cors-headers": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.RestPropertyDefinition.class);
                    target.setCorsHeaders(val);
                    break;
                }
                case "data-format-property": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.RestPropertyDefinition.class);
                    target.setDataFormatProperties(val);
                    break;
                }
                case "enable-cors": {
                    String val = asText(node);
                    target.setEnableCORS(val);
                    break;
                }
                case "endpoint-property": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.RestPropertyDefinition.class);
                    target.setEndpointProperties(val);
                    break;
                }
                case "host": {
                    String val = asText(node);
                    target.setHost(val);
                    break;
                }
                case "host-name-resolver": {
                    target.setHostNameResolver(asEnum(node, org.apache.camel.model.rest.RestHostNameResolver.class));
                    break;
                }
                case "inline-routes": {
                    String val = asText(node);
                    target.setInlineRoutes(val);
                    break;
                }
                case "json-data-format": {
                    String val = asText(node);
                    target.setJsonDataFormat(val);
                    break;
                }
                case "port": {
                    String val = asText(node);
                    target.setPort(val);
                    break;
                }
                case "producer-api-doc": {
                    String val = asText(node);
                    target.setProducerApiDoc(val);
                    break;
                }
                case "producer-component": {
                    String val = asText(node);
                    target.setProducerComponent(val);
                    break;
                }
                case "scheme": {
                    String val = asText(node);
                    target.setScheme(val);
                    break;
                }
                case "skip-binding-on-error-code": {
                    String val = asText(node);
                    target.setSkipBindingOnErrorCode(val);
                    break;
                }
                case "use-x-forward-headers": {
                    String val = asText(node);
                    target.setUseXForwardHeaders(val);
                    break;
                }
                case "xml-data-format": {
                    String val = asText(node);
                    target.setXmlDataFormat(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "rest-context-ref",
                    "restContextRef"
            },
            inline = true,
            types = org.apache.camel.model.RestContextRefDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = @YamlProperty(name = "ref", type = "string", required = true)
    )
    public static class RestContextRefDefinitionDeserializer extends YamlDeserializerBase {
        public RestContextRefDefinitionDeserializer() {
            super(RestContextRefDefinition.class);
        }

        @Override
        protected RestContextRefDefinition newInstance() {
            return new RestContextRefDefinition();
        }

        @Override
        protected RestContextRefDefinition newInstance(String value) {
            return new RestContextRefDefinition(value);
        }

        @Override
        protected boolean setProperty(RestContextRefDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlIn
    @YamlType(
            nodes = "rest",
            types = org.apache.camel.model.rest.RestDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "api-docs", type = "boolean"),
                    @YamlProperty(name = "binding-mode", type = "enum:off,auto,json,xml,json_xml"),
                    @YamlProperty(name = "client-request-validation", type = "boolean"),
                    @YamlProperty(name = "consumes", type = "string"),
                    @YamlProperty(name = "delete", type = "array:org.apache.camel.model.rest.DeleteDefinition"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "enable-cors", type = "boolean"),
                    @YamlProperty(name = "get", type = "array:org.apache.camel.model.rest.GetDefinition"),
                    @YamlProperty(name = "head", type = "array:org.apache.camel.model.rest.HeadDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "patch", type = "array:org.apache.camel.model.rest.PatchDefinition"),
                    @YamlProperty(name = "path", type = "string"),
                    @YamlProperty(name = "post", type = "array:org.apache.camel.model.rest.PostDefinition"),
                    @YamlProperty(name = "produces", type = "string"),
                    @YamlProperty(name = "put", type = "array:org.apache.camel.model.rest.PutDefinition"),
                    @YamlProperty(name = "security-definitions", type = "object:org.apache.camel.model.rest.RestSecuritiesDefinition"),
                    @YamlProperty(name = "security-requirements", type = "array:org.apache.camel.model.rest.SecurityDefinition"),
                    @YamlProperty(name = "skip-binding-on-error-code", type = "boolean"),
                    @YamlProperty(name = "tag", type = "string")
            }
    )
    public static class RestDefinitionDeserializer extends YamlDeserializerBase {
        public RestDefinitionDeserializer() {
            super(RestDefinition.class);
        }

        @Override
        protected RestDefinition newInstance() {
            return new RestDefinition();
        }

        @Override
        protected boolean setProperty(RestDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "api-docs": {
                    String val = asText(node);
                    target.setApiDocs(val);
                    break;
                }
                case "binding-mode": {
                    String val = asText(node);
                    target.setBindingMode(val);
                    break;
                }
                case "client-request-validation": {
                    String val = asText(node);
                    target.setClientRequestValidation(val);
                    break;
                }
                case "consumes": {
                    String val = asText(node);
                    target.setConsumes(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "enable-cors": {
                    String val = asText(node);
                    target.setEnableCORS(val);
                    break;
                }
                case "path": {
                    String val = asText(node);
                    target.setPath(val);
                    break;
                }
                case "produces": {
                    String val = asText(node);
                    target.setProduces(val);
                    break;
                }
                case "security-definitions": {
                    org.apache.camel.model.rest.RestSecuritiesDefinition val = asType(node, org.apache.camel.model.rest.RestSecuritiesDefinition.class);
                    target.setSecurityDefinitions(val);
                    break;
                }
                case "security-requirements": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.SecurityDefinition.class);
                    target.setSecurityRequirements(val);
                    break;
                }
                case "skip-binding-on-error-code": {
                    String val = asText(node);
                    target.setSkipBindingOnErrorCode(val);
                    break;
                }
                case "tag": {
                    String val = asText(node);
                    target.setTag(val);
                    break;
                }
                case "delete": {
                    java.util.List existing = target.getVerbs();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.DeleteDefinition.class);
                    existing.addAll(val);
                    target.setVerbs(existing);
                    break;
                }
                case "get": {
                    java.util.List existing = target.getVerbs();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.GetDefinition.class);
                    existing.addAll(val);
                    target.setVerbs(existing);
                    break;
                }
                case "head": {
                    java.util.List existing = target.getVerbs();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.HeadDefinition.class);
                    existing.addAll(val);
                    target.setVerbs(existing);
                    break;
                }
                case "patch": {
                    java.util.List existing = target.getVerbs();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.PatchDefinition.class);
                    existing.addAll(val);
                    target.setVerbs(existing);
                    break;
                }
                case "post": {
                    java.util.List existing = target.getVerbs();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.PostDefinition.class);
                    existing.addAll(val);
                    target.setVerbs(existing);
                    break;
                }
                case "put": {
                    java.util.List existing = target.getVerbs();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.PutDefinition.class);
                    existing.addAll(val);
                    target.setVerbs(existing);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "rest-property",
                    "restProperty"
            },
            types = org.apache.camel.model.rest.RestPropertyDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "key", type = "string", required = true),
                    @YamlProperty(name = "value", type = "string", required = true)
            }
    )
    public static class RestPropertyDefinitionDeserializer extends YamlDeserializerBase {
        public RestPropertyDefinitionDeserializer() {
            super(RestPropertyDefinition.class);
        }

        @Override
        protected RestPropertyDefinition newInstance() {
            return new RestPropertyDefinition();
        }

        @Override
        protected boolean setProperty(RestPropertyDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "key": {
                    String val = asText(node);
                    target.setKey(val);
                    break;
                }
                case "value": {
                    String val = asText(node);
                    target.setValue(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "security-definitions",
                    "securityDefinitions"
            },
            types = org.apache.camel.model.rest.RestSecuritiesDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "api-key", type = "object:org.apache.camel.model.rest.ApiKeyDefinition"),
                    @YamlProperty(name = "basic-auth", type = "object:org.apache.camel.model.rest.BasicAuthDefinition"),
                    @YamlProperty(name = "bearer", type = "object:org.apache.camel.model.rest.BearerTokenDefinition"),
                    @YamlProperty(name = "mutual-tls", type = "object:org.apache.camel.model.rest.MutualTLSDefinition"),
                    @YamlProperty(name = "oauth2", type = "object:org.apache.camel.model.rest.OAuth2Definition"),
                    @YamlProperty(name = "open-id-connect", type = "object:org.apache.camel.model.rest.OpenIdConnectDefinition")
            }
    )
    public static class RestSecuritiesDefinitionDeserializer extends YamlDeserializerBase {
        public RestSecuritiesDefinitionDeserializer() {
            super(RestSecuritiesDefinition.class);
        }

        @Override
        protected RestSecuritiesDefinition newInstance() {
            return new RestSecuritiesDefinition();
        }

        @Override
        protected boolean setProperty(RestSecuritiesDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "security-definitions": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "api-key": {
                    org.apache.camel.model.rest.ApiKeyDefinition val = asType(node, org.apache.camel.model.rest.ApiKeyDefinition.class);
                    java.util.List existing = target.getSecurityDefinitions();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setSecurityDefinitions(existing);
                    break;
                }
                case "basic-auth": {
                    org.apache.camel.model.rest.BasicAuthDefinition val = asType(node, org.apache.camel.model.rest.BasicAuthDefinition.class);
                    java.util.List existing = target.getSecurityDefinitions();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setSecurityDefinitions(existing);
                    break;
                }
                case "bearer": {
                    org.apache.camel.model.rest.BearerTokenDefinition val = asType(node, org.apache.camel.model.rest.BearerTokenDefinition.class);
                    java.util.List existing = target.getSecurityDefinitions();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setSecurityDefinitions(existing);
                    break;
                }
                case "oauth2": {
                    org.apache.camel.model.rest.OAuth2Definition val = asType(node, org.apache.camel.model.rest.OAuth2Definition.class);
                    java.util.List existing = target.getSecurityDefinitions();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setSecurityDefinitions(existing);
                    break;
                }
                case "open-id-connect": {
                    org.apache.camel.model.rest.OpenIdConnectDefinition val = asType(node, org.apache.camel.model.rest.OpenIdConnectDefinition.class);
                    java.util.List existing = target.getSecurityDefinitions();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setSecurityDefinitions(existing);
                    break;
                }
                case "mutual-tls": {
                    org.apache.camel.model.rest.MutualTLSDefinition val = asType(node, org.apache.camel.model.rest.MutualTLSDefinition.class);
                    java.util.List existing = target.getSecurityDefinitions();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setSecurityDefinitions(existing);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "rests",
            types = org.apache.camel.model.rest.RestsDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "rest", type = "array:org.apache.camel.model.rest.RestDefinition")
            }
    )
    public static class RestsDefinitionDeserializer extends YamlDeserializerBase {
        public RestsDefinitionDeserializer() {
            super(RestsDefinition.class);
        }

        @Override
        protected RestsDefinition newInstance() {
            return new RestsDefinition();
        }

        @Override
        protected boolean setProperty(RestsDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "rest": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.rest.RestDefinition.class);
                    target.setRests(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "resumable",
            types = org.apache.camel.model.ResumableDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "intermittent", type = "boolean"),
                    @YamlProperty(name = "resume-strategy", type = "string", required = true)
            }
    )
    public static class ResumableDefinitionDeserializer extends YamlDeserializerBase {
        public ResumableDefinitionDeserializer() {
            super(ResumableDefinition.class);
        }

        @Override
        protected ResumableDefinition newInstance() {
            return new ResumableDefinition();
        }

        @Override
        protected boolean setProperty(ResumableDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "intermittent": {
                    String val = asText(node);
                    target.setIntermittent(val);
                    break;
                }
                case "resume-strategy": {
                    String val = asText(node);
                    target.setResumeStrategy(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "rollback",
            inline = true,
            types = org.apache.camel.model.RollbackDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "mark-rollback-only", type = "boolean"),
                    @YamlProperty(name = "mark-rollback-only-last", type = "boolean"),
                    @YamlProperty(name = "message", type = "string")
            }
    )
    public static class RollbackDefinitionDeserializer extends YamlDeserializerBase {
        public RollbackDefinitionDeserializer() {
            super(RollbackDefinition.class);
        }

        @Override
        protected RollbackDefinition newInstance() {
            return new RollbackDefinition();
        }

        @Override
        protected RollbackDefinition newInstance(String value) {
            return new RollbackDefinition(value);
        }

        @Override
        protected boolean setProperty(RollbackDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "mark-rollback-only": {
                    String val = asText(node);
                    target.setMarkRollbackOnly(val);
                    break;
                }
                case "mark-rollback-only-last": {
                    String val = asText(node);
                    target.setMarkRollbackOnlyLast(val);
                    break;
                }
                case "message": {
                    String val = asText(node);
                    target.setMessage(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "round-robin",
                    "roundRobin"
            },
            types = org.apache.camel.model.loadbalancer.RoundRobinLoadBalancerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = @YamlProperty(name = "id", type = "string")
    )
    public static class RoundRobinLoadBalancerDefinitionDeserializer extends YamlDeserializerBase {
        public RoundRobinLoadBalancerDefinitionDeserializer() {
            super(RoundRobinLoadBalancerDefinition.class);
        }

        @Override
        protected RoundRobinLoadBalancerDefinition newInstance() {
            return new RoundRobinLoadBalancerDefinition();
        }

        @Override
        protected boolean setProperty(RoundRobinLoadBalancerDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "route-builder",
                    "routeBuilder"
            },
            inline = true,
            types = org.apache.camel.model.RouteBuilderDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ref", type = "string", required = true)
            }
    )
    public static class RouteBuilderDefinitionDeserializer extends YamlDeserializerBase {
        public RouteBuilderDefinitionDeserializer() {
            super(RouteBuilderDefinition.class);
        }

        @Override
        protected RouteBuilderDefinition newInstance() {
            return new RouteBuilderDefinition();
        }

        @Override
        protected RouteBuilderDefinition newInstance(String value) {
            return new RouteBuilderDefinition(value);
        }

        @Override
        protected boolean setProperty(RouteBuilderDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "route-configuration-context-ref",
                    "routeConfigurationContextRef"
            },
            inline = true,
            types = org.apache.camel.model.RouteConfigurationContextRefDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = @YamlProperty(name = "ref", type = "string", required = true)
    )
    public static class RouteConfigurationContextRefDefinitionDeserializer extends YamlDeserializerBase {
        public RouteConfigurationContextRefDefinitionDeserializer() {
            super(RouteConfigurationContextRefDefinition.class);
        }

        @Override
        protected RouteConfigurationContextRefDefinition newInstance() {
            return new RouteConfigurationContextRefDefinition();
        }

        @Override
        protected RouteConfigurationContextRefDefinition newInstance(String value) {
            return new RouteConfigurationContextRefDefinition(value);
        }

        @Override
        protected boolean setProperty(RouteConfigurationContextRefDefinition target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "route-context-ref",
                    "routeContextRef"
            },
            inline = true,
            types = org.apache.camel.model.RouteContextRefDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = @YamlProperty(name = "ref", type = "string", required = true)
    )
    public static class RouteContextRefDefinitionDeserializer extends YamlDeserializerBase {
        public RouteContextRefDefinitionDeserializer() {
            super(RouteContextRefDefinition.class);
        }

        @Override
        protected RouteContextRefDefinition newInstance() {
            return new RouteContextRefDefinition();
        }

        @Override
        protected RouteContextRefDefinition newInstance(String value) {
            return new RouteContextRefDefinition(value);
        }

        @Override
        protected boolean setProperty(RouteContextRefDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "route",
            inline = true,
            types = org.apache.camel.model.RouteDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class RouteDefinitionDeserializer extends YamlDeserializerBase {
        public RouteDefinitionDeserializer() {
            super(RouteDefinition.class);
        }

        @Override
        protected RouteDefinition newInstance() {
            return new RouteDefinition();
        }

        @Override
        protected RouteDefinition newInstance(String value) {
            return new RouteDefinition(value);
        }

        @Override
        protected boolean setProperty(RouteDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "template-parameter",
                    "templateParameter"
            },
            types = org.apache.camel.model.RouteTemplateParameterDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "default-value", type = "string"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "name", type = "string", required = true),
                    @YamlProperty(name = "required", type = "boolean")
            }
    )
    public static class RouteTemplateParameterDefinitionDeserializer extends YamlDeserializerBase {
        public RouteTemplateParameterDefinitionDeserializer() {
            super(RouteTemplateParameterDefinition.class);
        }

        @Override
        protected RouteTemplateParameterDefinition newInstance() {
            return new RouteTemplateParameterDefinition();
        }

        @Override
        protected boolean setProperty(RouteTemplateParameterDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "default-value": {
                    String val = asText(node);
                    target.setDefaultValue(val);
                    break;
                }
                case "description": {
                    String val = asText(node);
                    target.setDescription(val);
                    break;
                }
                case "name": {
                    String val = asText(node);
                    target.setName(val);
                    break;
                }
                case "required": {
                    String val = asText(node);
                    target.setRequired(java.lang.Boolean.valueOf(val));
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "routing-slip",
                    "routingSlip"
            },
            inline = true,
            types = org.apache.camel.model.RoutingSlipDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "cache-size", type = "number"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ignore-invalid-endpoints", type = "boolean"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "uri-delimiter", type = "string")
            }
    )
    public static class RoutingSlipDefinitionDeserializer extends YamlDeserializerBase {
        public RoutingSlipDefinitionDeserializer() {
            super(RoutingSlipDefinition.class);
        }

        @Override
        protected RoutingSlipDefinition newInstance() {
            return new RoutingSlipDefinition();
        }

        @Override
        protected RoutingSlipDefinition newInstance(String value) {
            return new RoutingSlipDefinition(value);
        }

        @Override
        protected boolean setProperty(RoutingSlipDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "cache-size": {
                    String val = asText(node);
                    target.setCacheSize(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "ignore-invalid-endpoints": {
                    String val = asText(node);
                    target.setIgnoreInvalidEndpoints(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "uri-delimiter": {
                    String val = asText(node);
                    target.setUriDelimiter(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "rss",
            types = org.apache.camel.model.dataformat.RssDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = @YamlProperty(name = "id", type = "string")
    )
    public static class RssDataFormatDeserializer extends YamlDeserializerBase {
        public RssDataFormatDeserializer() {
            super(RssDataFormat.class);
        }

        @Override
        protected RssDataFormat newInstance() {
            return new RssDataFormat();
        }

        @Override
        protected boolean setProperty(RssDataFormat target, String propertyKey, String propertyName,
                Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            inline = true,
            types = org.apache.camel.model.SagaActionUriDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "parameters", type = "object"),
                    @YamlProperty(name = "uri", type = "string", required = true)
            }
    )
    public static class SagaActionUriDefinitionDeserializer extends YamlDeserializerEndpointAwareBase {
        public SagaActionUriDefinitionDeserializer() {
            super(SagaActionUriDefinition.class);
        }

        @Override
        protected SagaActionUriDefinition newInstance() {
            return new SagaActionUriDefinition();
        }

        @Override
        protected SagaActionUriDefinition newInstance(String value) {
            return new SagaActionUriDefinition(value);
        }

        @Override
        protected void setEndpointUri(CamelContext camelContext, Node node,
                SagaActionUriDefinition target, Map parameters) {
            target.setUri(org.apache.camel.dsl.yaml.common.YamlSupport.createEndpointUri(camelContext, node, target.getUri(), parameters));
        }

        @Override
        protected boolean setProperty(SagaActionUriDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "uri": {
                    String val = asText(node);
                    target.setUri(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "saga",
            types = org.apache.camel.model.SagaDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "compensation", type = "object:org.apache.camel.model.SagaActionUriDefinition"),
                    @YamlProperty(name = "completion", type = "object:org.apache.camel.model.SagaActionUriDefinition"),
                    @YamlProperty(name = "completion-mode", type = "enum:AUTO,MANUAL"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "option", type = "array:org.apache.camel.model.PropertyExpressionDefinition"),
                    @YamlProperty(name = "propagation", type = "enum:REQUIRED,REQUIRES_NEW,MANDATORY,SUPPORTS,NOT_SUPPORTED,NEVER"),
                    @YamlProperty(name = "saga-service", type = "string"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition"),
                    @YamlProperty(name = "timeout", type = "string")
            }
    )
    public static class SagaDefinitionDeserializer extends YamlDeserializerBase {
        public SagaDefinitionDeserializer() {
            super(SagaDefinition.class);
        }

        @Override
        protected SagaDefinition newInstance() {
            return new SagaDefinition();
        }

        @Override
        protected boolean setProperty(SagaDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "compensation": {
                    org.apache.camel.model.SagaActionUriDefinition val = asType(node, org.apache.camel.model.SagaActionUriDefinition.class);
                    target.setCompensation(val);
                    break;
                }
                case "completion": {
                    org.apache.camel.model.SagaActionUriDefinition val = asType(node, org.apache.camel.model.SagaActionUriDefinition.class);
                    target.setCompletion(val);
                    break;
                }
                case "completion-mode": {
                    String val = asText(node);
                    target.setCompletionMode(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "option": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyExpressionDefinition.class);
                    target.setOptions(val);
                    break;
                }
                case "propagation": {
                    String val = asText(node);
                    target.setPropagation(val);
                    break;
                }
                case "saga-service": {
                    String val = asText(node);
                    target.setSagaService(val);
                    break;
                }
                case "timeout": {
                    String val = asText(node);
                    target.setTimeout(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "sample",
            inline = true,
            types = org.apache.camel.model.SamplingDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "message-frequency", type = "number"),
                    @YamlProperty(name = "sample-period", type = "string")
            }
    )
    public static class SamplingDefinitionDeserializer extends YamlDeserializerBase {
        public SamplingDefinitionDeserializer() {
            super(SamplingDefinition.class);
        }

        @Override
        protected SamplingDefinition newInstance() {
            return new SamplingDefinition();
        }

        @Override
        protected SamplingDefinition newInstance(String value) {
            return new SamplingDefinition(value);
        }

        @Override
        protected boolean setProperty(SamplingDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "message-frequency": {
                    String val = asText(node);
                    target.setMessageFrequency(val);
                    break;
                }
                case "sample-period": {
                    String val = asText(node);
                    target.setSamplePeriod(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "script",
            types = org.apache.camel.model.ScriptDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean")
            }
    )
    public static class ScriptDefinitionDeserializer extends YamlDeserializerBase {
        public ScriptDefinitionDeserializer() {
            super(ScriptDefinition.class);
        }

        @Override
        protected ScriptDefinition newInstance() {
            return new ScriptDefinition();
        }

        @Override
        protected boolean setProperty(ScriptDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "security",
            types = org.apache.camel.model.rest.SecurityDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "key", type = "string", required = true),
                    @YamlProperty(name = "scopes", type = "string")
            }
    )
    public static class SecurityDefinitionDeserializer extends YamlDeserializerBase {
        public SecurityDefinitionDeserializer() {
            super(SecurityDefinition.class);
        }

        @Override
        protected SecurityDefinition newInstance() {
            return new SecurityDefinition();
        }

        @Override
        protected boolean setProperty(SecurityDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "key": {
                    String val = asText(node);
                    target.setKey(val);
                    break;
                }
                case "scopes": {
                    String val = asText(node);
                    target.setScopes(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "service-call-configuration",
                    "serviceCallConfiguration"
            },
            types = org.apache.camel.model.cloud.ServiceCallConfigurationDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "blacklist-service-filter", type = "object:org.apache.camel.model.cloud.BlacklistServiceCallServiceFilterConfiguration"),
                    @YamlProperty(name = "caching-service-discovery", type = "object:org.apache.camel.model.cloud.CachingServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "combined-service-discovery", type = "object:org.apache.camel.model.cloud.CombinedServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "combined-service-filter", type = "object:org.apache.camel.model.cloud.CombinedServiceCallServiceFilterConfiguration"),
                    @YamlProperty(name = "component", type = "string"),
                    @YamlProperty(name = "consul-service-discovery", type = "object:org.apache.camel.model.cloud.ConsulServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "custom-service-filter", type = "object:org.apache.camel.model.cloud.CustomServiceCallServiceFilterConfiguration"),
                    @YamlProperty(name = "default-load-balancer", type = "object:org.apache.camel.model.cloud.DefaultServiceCallServiceLoadBalancerConfiguration"),
                    @YamlProperty(name = "dns-service-discovery", type = "object:org.apache.camel.model.cloud.DnsServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.cloud.ServiceCallExpressionConfiguration"),
                    @YamlProperty(name = "expression-ref", type = "string"),
                    @YamlProperty(name = "healthy-service-filter", type = "object:org.apache.camel.model.cloud.HealthyServiceCallServiceFilterConfiguration"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "kubernetes-service-discovery", type = "object:org.apache.camel.model.cloud.KubernetesServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "load-balancer-ref", type = "string"),
                    @YamlProperty(name = "pass-through-service-filter", type = "object:org.apache.camel.model.cloud.PassThroughServiceCallServiceFilterConfiguration"),
                    @YamlProperty(name = "pattern", type = "enum:InOnly,InOut,InOptionalOut"),
                    @YamlProperty(name = "service-chooser-ref", type = "string"),
                    @YamlProperty(name = "service-discovery-ref", type = "string"),
                    @YamlProperty(name = "service-filter-ref", type = "string"),
                    @YamlProperty(name = "static-service-discovery", type = "object:org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "uri", type = "string"),
                    @YamlProperty(name = "zookeeper-service-discovery", type = "object:org.apache.camel.model.cloud.ZooKeeperServiceCallServiceDiscoveryConfiguration")
            }
    )
    public static class ServiceCallConfigurationDefinitionDeserializer extends YamlDeserializerBase {
        public ServiceCallConfigurationDefinitionDeserializer() {
            super(ServiceCallConfigurationDefinition.class);
        }

        @Override
        protected ServiceCallConfigurationDefinition newInstance() {
            return new ServiceCallConfigurationDefinition();
        }

        @Override
        protected boolean setProperty(ServiceCallConfigurationDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "component": {
                    String val = asText(node);
                    target.setComponent(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.cloud.ServiceCallExpressionConfiguration val = asType(node, org.apache.camel.model.cloud.ServiceCallExpressionConfiguration.class);
                    target.setExpressionConfiguration(val);
                    break;
                }
                case "expression-ref": {
                    String val = asText(node);
                    target.setExpressionRef(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "default-load-balancer": {
                    org.apache.camel.model.cloud.DefaultServiceCallServiceLoadBalancerConfiguration val = asType(node, org.apache.camel.model.cloud.DefaultServiceCallServiceLoadBalancerConfiguration.class);
                    target.setLoadBalancerConfiguration(val);
                    break;
                }
                case "load-balancer-ref": {
                    String val = asText(node);
                    target.setLoadBalancerRef(val);
                    break;
                }
                case "pattern": {
                    String val = asText(node);
                    target.setPattern(val);
                    break;
                }
                case "service-chooser-ref": {
                    String val = asText(node);
                    target.setServiceChooserRef(val);
                    break;
                }
                case "service-discovery-configuration": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "caching-service-discovery": {
                    org.apache.camel.model.cloud.CachingServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.CachingServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "combined-service-discovery": {
                    org.apache.camel.model.cloud.CombinedServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.CombinedServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "consul-service-discovery": {
                    org.apache.camel.model.cloud.ConsulServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.ConsulServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "dns-service-discovery": {
                    org.apache.camel.model.cloud.DnsServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.DnsServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "kubernetes-service-discovery": {
                    org.apache.camel.model.cloud.KubernetesServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.KubernetesServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "static-service-discovery": {
                    org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "zookeeper-service-discovery": {
                    org.apache.camel.model.cloud.ZooKeeperServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.ZooKeeperServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "service-discovery-ref": {
                    String val = asText(node);
                    target.setServiceDiscoveryRef(val);
                    break;
                }
                case "service-filter-configuration": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "blacklist-service-filter": {
                    org.apache.camel.model.cloud.BlacklistServiceCallServiceFilterConfiguration val = asType(node, org.apache.camel.model.cloud.BlacklistServiceCallServiceFilterConfiguration.class);
                    target.setServiceFilterConfiguration(val);
                    break;
                }
                case "combined-service-filter": {
                    org.apache.camel.model.cloud.CombinedServiceCallServiceFilterConfiguration val = asType(node, org.apache.camel.model.cloud.CombinedServiceCallServiceFilterConfiguration.class);
                    target.setServiceFilterConfiguration(val);
                    break;
                }
                case "custom-service-filter": {
                    org.apache.camel.model.cloud.CustomServiceCallServiceFilterConfiguration val = asType(node, org.apache.camel.model.cloud.CustomServiceCallServiceFilterConfiguration.class);
                    target.setServiceFilterConfiguration(val);
                    break;
                }
                case "healthy-service-filter": {
                    org.apache.camel.model.cloud.HealthyServiceCallServiceFilterConfiguration val = asType(node, org.apache.camel.model.cloud.HealthyServiceCallServiceFilterConfiguration.class);
                    target.setServiceFilterConfiguration(val);
                    break;
                }
                case "pass-through-service-filter": {
                    org.apache.camel.model.cloud.PassThroughServiceCallServiceFilterConfiguration val = asType(node, org.apache.camel.model.cloud.PassThroughServiceCallServiceFilterConfiguration.class);
                    target.setServiceFilterConfiguration(val);
                    break;
                }
                case "service-filter-ref": {
                    String val = asText(node);
                    target.setServiceFilterRef(val);
                    break;
                }
                case "uri": {
                    String val = asText(node);
                    target.setUri(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "service-call",
                    "serviceCall"
            },
            inline = true,
            types = org.apache.camel.model.cloud.ServiceCallDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "blacklist-service-filter", type = "object:org.apache.camel.model.cloud.BlacklistServiceCallServiceFilterConfiguration"),
                    @YamlProperty(name = "caching-service-discovery", type = "object:org.apache.camel.model.cloud.CachingServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "combined-service-discovery", type = "object:org.apache.camel.model.cloud.CombinedServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "combined-service-filter", type = "object:org.apache.camel.model.cloud.CombinedServiceCallServiceFilterConfiguration"),
                    @YamlProperty(name = "component", type = "string"),
                    @YamlProperty(name = "configuration-ref", type = "string"),
                    @YamlProperty(name = "consul-service-discovery", type = "object:org.apache.camel.model.cloud.ConsulServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "custom-service-filter", type = "object:org.apache.camel.model.cloud.CustomServiceCallServiceFilterConfiguration"),
                    @YamlProperty(name = "default-load-balancer", type = "object:org.apache.camel.model.cloud.DefaultServiceCallServiceLoadBalancerConfiguration"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "dns-service-discovery", type = "object:org.apache.camel.model.cloud.DnsServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.cloud.ServiceCallExpressionConfiguration"),
                    @YamlProperty(name = "expression-ref", type = "string"),
                    @YamlProperty(name = "healthy-service-filter", type = "object:org.apache.camel.model.cloud.HealthyServiceCallServiceFilterConfiguration"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "kubernetes-service-discovery", type = "object:org.apache.camel.model.cloud.KubernetesServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "load-balancer-ref", type = "string"),
                    @YamlProperty(name = "name", type = "string", required = true),
                    @YamlProperty(name = "pass-through-service-filter", type = "object:org.apache.camel.model.cloud.PassThroughServiceCallServiceFilterConfiguration"),
                    @YamlProperty(name = "pattern", type = "enum:InOnly,InOut,InOptionalOut"),
                    @YamlProperty(name = "service-chooser-ref", type = "string"),
                    @YamlProperty(name = "service-discovery-ref", type = "string"),
                    @YamlProperty(name = "service-filter-ref", type = "string"),
                    @YamlProperty(name = "static-service-discovery", type = "object:org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration"),
                    @YamlProperty(name = "uri", type = "string"),
                    @YamlProperty(name = "zookeeper-service-discovery", type = "object:org.apache.camel.model.cloud.ZooKeeperServiceCallServiceDiscoveryConfiguration")
            }
    )
    public static class ServiceCallDefinitionDeserializer extends YamlDeserializerBase {
        public ServiceCallDefinitionDeserializer() {
            super(ServiceCallDefinition.class);
        }

        @Override
        protected ServiceCallDefinition newInstance() {
            return new ServiceCallDefinition();
        }

        @Override
        protected ServiceCallDefinition newInstance(String value) {
            return new ServiceCallDefinition(value);
        }

        @Override
        protected boolean setProperty(ServiceCallDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "component": {
                    String val = asText(node);
                    target.setComponent(val);
                    break;
                }
                case "configuration-ref": {
                    String val = asText(node);
                    target.setConfigurationRef(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.cloud.ServiceCallExpressionConfiguration val = asType(node, org.apache.camel.model.cloud.ServiceCallExpressionConfiguration.class);
                    target.setExpressionConfiguration(val);
                    break;
                }
                case "expression-ref": {
                    String val = asText(node);
                    target.setExpressionRef(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "default-load-balancer": {
                    org.apache.camel.model.cloud.DefaultServiceCallServiceLoadBalancerConfiguration val = asType(node, org.apache.camel.model.cloud.DefaultServiceCallServiceLoadBalancerConfiguration.class);
                    target.setLoadBalancerConfiguration(val);
                    break;
                }
                case "load-balancer-ref": {
                    String val = asText(node);
                    target.setLoadBalancerRef(val);
                    break;
                }
                case "name": {
                    String val = asText(node);
                    target.setName(val);
                    break;
                }
                case "pattern": {
                    String val = asText(node);
                    target.setPattern(val);
                    break;
                }
                case "service-chooser-ref": {
                    String val = asText(node);
                    target.setServiceChooserRef(val);
                    break;
                }
                case "service-discovery-configuration": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "caching-service-discovery": {
                    org.apache.camel.model.cloud.CachingServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.CachingServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "combined-service-discovery": {
                    org.apache.camel.model.cloud.CombinedServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.CombinedServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "consul-service-discovery": {
                    org.apache.camel.model.cloud.ConsulServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.ConsulServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "dns-service-discovery": {
                    org.apache.camel.model.cloud.DnsServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.DnsServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "kubernetes-service-discovery": {
                    org.apache.camel.model.cloud.KubernetesServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.KubernetesServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "static-service-discovery": {
                    org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "zookeeper-service-discovery": {
                    org.apache.camel.model.cloud.ZooKeeperServiceCallServiceDiscoveryConfiguration val = asType(node, org.apache.camel.model.cloud.ZooKeeperServiceCallServiceDiscoveryConfiguration.class);
                    target.setServiceDiscoveryConfiguration(val);
                    break;
                }
                case "service-discovery-ref": {
                    String val = asText(node);
                    target.setServiceDiscoveryRef(val);
                    break;
                }
                case "service-filter-configuration": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "blacklist-service-filter": {
                    org.apache.camel.model.cloud.BlacklistServiceCallServiceFilterConfiguration val = asType(node, org.apache.camel.model.cloud.BlacklistServiceCallServiceFilterConfiguration.class);
                    target.setServiceFilterConfiguration(val);
                    break;
                }
                case "combined-service-filter": {
                    org.apache.camel.model.cloud.CombinedServiceCallServiceFilterConfiguration val = asType(node, org.apache.camel.model.cloud.CombinedServiceCallServiceFilterConfiguration.class);
                    target.setServiceFilterConfiguration(val);
                    break;
                }
                case "custom-service-filter": {
                    org.apache.camel.model.cloud.CustomServiceCallServiceFilterConfiguration val = asType(node, org.apache.camel.model.cloud.CustomServiceCallServiceFilterConfiguration.class);
                    target.setServiceFilterConfiguration(val);
                    break;
                }
                case "healthy-service-filter": {
                    org.apache.camel.model.cloud.HealthyServiceCallServiceFilterConfiguration val = asType(node, org.apache.camel.model.cloud.HealthyServiceCallServiceFilterConfiguration.class);
                    target.setServiceFilterConfiguration(val);
                    break;
                }
                case "pass-through-service-filter": {
                    org.apache.camel.model.cloud.PassThroughServiceCallServiceFilterConfiguration val = asType(node, org.apache.camel.model.cloud.PassThroughServiceCallServiceFilterConfiguration.class);
                    target.setServiceFilterConfiguration(val);
                    break;
                }
                case "service-filter-ref": {
                    String val = asText(node);
                    target.setServiceFilterRef(val);
                    break;
                }
                case "uri": {
                    String val = asText(node);
                    target.setUri(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "service-expression",
                    "serviceExpression"
            },
            types = org.apache.camel.model.cloud.ServiceCallExpressionConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression-type", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "host-header", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "port-header", type = "string"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition")
            }
    )
    public static class ServiceCallExpressionConfigurationDeserializer extends YamlDeserializerBase {
        public ServiceCallExpressionConfigurationDeserializer() {
            super(ServiceCallExpressionConfiguration.class);
        }

        @Override
        protected ServiceCallExpressionConfiguration newInstance() {
            return new ServiceCallExpressionConfiguration();
        }

        @Override
        protected boolean setProperty(ServiceCallExpressionConfiguration target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression-type": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpressionType(val);
                    break;
                }
                case "host-header": {
                    String val = asText(node);
                    target.setHostHeader(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "port-header": {
                    String val = asText(node);
                    target.setPortHeader(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "service-chooser-configuration",
                    "serviceChooserConfiguration"
            },
            types = org.apache.camel.model.cloud.ServiceCallServiceChooserConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition")
            }
    )
    public static class ServiceCallServiceChooserConfigurationDeserializer extends YamlDeserializerBase {
        public ServiceCallServiceChooserConfigurationDeserializer() {
            super(ServiceCallServiceChooserConfiguration.class);
        }

        @Override
        protected ServiceCallServiceChooserConfiguration newInstance() {
            return new ServiceCallServiceChooserConfiguration();
        }

        @Override
        protected boolean setProperty(ServiceCallServiceChooserConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "service-discovery-configuration",
                    "serviceDiscoveryConfiguration"
            },
            types = org.apache.camel.model.cloud.ServiceCallServiceDiscoveryConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition")
            }
    )
    public static class ServiceCallServiceDiscoveryConfigurationDeserializer extends YamlDeserializerBase {
        public ServiceCallServiceDiscoveryConfigurationDeserializer() {
            super(ServiceCallServiceDiscoveryConfiguration.class);
        }

        @Override
        protected ServiceCallServiceDiscoveryConfiguration newInstance() {
            return new ServiceCallServiceDiscoveryConfiguration();
        }

        @Override
        protected boolean setProperty(ServiceCallServiceDiscoveryConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "service-filter-configuration",
                    "serviceFilterConfiguration"
            },
            types = org.apache.camel.model.cloud.ServiceCallServiceFilterConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition")
            }
    )
    public static class ServiceCallServiceFilterConfigurationDeserializer extends YamlDeserializerBase {
        public ServiceCallServiceFilterConfigurationDeserializer() {
            super(ServiceCallServiceFilterConfiguration.class);
        }

        @Override
        protected ServiceCallServiceFilterConfiguration newInstance() {
            return new ServiceCallServiceFilterConfiguration();
        }

        @Override
        protected boolean setProperty(ServiceCallServiceFilterConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "load-balancer-configuration",
                    "loadBalancerConfiguration"
            },
            types = org.apache.camel.model.cloud.ServiceCallServiceLoadBalancerConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition")
            }
    )
    public static class ServiceCallServiceLoadBalancerConfigurationDeserializer extends YamlDeserializerBase {
        public ServiceCallServiceLoadBalancerConfigurationDeserializer() {
            super(ServiceCallServiceLoadBalancerConfiguration.class);
        }

        @Override
        protected ServiceCallServiceLoadBalancerConfiguration newInstance() {
            return new ServiceCallServiceLoadBalancerConfiguration();
        }

        @Override
        protected boolean setProperty(ServiceCallServiceLoadBalancerConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "set-body",
                    "setBody"
            },
            types = org.apache.camel.model.SetBodyDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean")
            }
    )
    public static class SetBodyDefinitionDeserializer extends YamlDeserializerBase {
        public SetBodyDefinitionDeserializer() {
            super(SetBodyDefinition.class);
        }

        @Override
        protected SetBodyDefinition newInstance() {
            return new SetBodyDefinition();
        }

        @Override
        protected boolean setProperty(SetBodyDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "set-exchange-pattern",
                    "setExchangePattern"
            },
            inline = true,
            types = org.apache.camel.model.SetExchangePatternDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "pattern", type = "enum:InOnly,InOut,InOptionalOut", required = true)
            }
    )
    public static class SetExchangePatternDefinitionDeserializer extends YamlDeserializerBase {
        public SetExchangePatternDefinitionDeserializer() {
            super(SetExchangePatternDefinition.class);
        }

        @Override
        protected SetExchangePatternDefinition newInstance() {
            return new SetExchangePatternDefinition();
        }

        @Override
        protected SetExchangePatternDefinition newInstance(String value) {
            return new SetExchangePatternDefinition(value);
        }

        @Override
        protected boolean setProperty(SetExchangePatternDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "pattern": {
                    String val = asText(node);
                    target.setPattern(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "set-header",
                    "setHeader"
            },
            types = org.apache.camel.model.SetHeaderDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "name", type = "string", required = true)
            }
    )
    public static class SetHeaderDefinitionDeserializer extends YamlDeserializerBase {
        public SetHeaderDefinitionDeserializer() {
            super(SetHeaderDefinition.class);
        }

        @Override
        protected SetHeaderDefinition newInstance() {
            return new SetHeaderDefinition();
        }

        @Override
        protected boolean setProperty(SetHeaderDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "name": {
                    String val = asText(node);
                    target.setName(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "set-property",
                    "setProperty"
            },
            types = org.apache.camel.model.SetPropertyDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "name", type = "string", required = true)
            }
    )
    public static class SetPropertyDefinitionDeserializer extends YamlDeserializerBase {
        public SetPropertyDefinitionDeserializer() {
            super(SetPropertyDefinition.class);
        }

        @Override
        protected SetPropertyDefinition newInstance() {
            return new SetPropertyDefinition();
        }

        @Override
        protected boolean setProperty(SetPropertyDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "name": {
                    String val = asText(node);
                    target.setName(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "simple",
            inline = true,
            types = org.apache.camel.model.language.SimpleExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class SimpleExpressionDeserializer extends YamlDeserializerBase {
        public SimpleExpressionDeserializer() {
            super(SimpleExpression.class);
        }

        @Override
        protected SimpleExpression newInstance() {
            return new SimpleExpression();
        }

        @Override
        protected SimpleExpression newInstance(String value) {
            return new SimpleExpression(value);
        }

        @Override
        protected boolean setProperty(SimpleExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "soap",
            inline = true,
            types = org.apache.camel.model.dataformat.SoapDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "context-path", type = "string", required = true),
                    @YamlProperty(name = "element-name-strategy-ref", type = "string"),
                    @YamlProperty(name = "encoding", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "namespace-prefix-ref", type = "string"),
                    @YamlProperty(name = "schema", type = "string"),
                    @YamlProperty(name = "version", type = "enum:1.1,1.2")
            }
    )
    public static class SoapDataFormatDeserializer extends YamlDeserializerBase {
        public SoapDataFormatDeserializer() {
            super(SoapDataFormat.class);
        }

        @Override
        protected SoapDataFormat newInstance() {
            return new SoapDataFormat();
        }

        @Override
        protected SoapDataFormat newInstance(String value) {
            return new SoapDataFormat(value);
        }

        @Override
        protected boolean setProperty(SoapDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "context-path": {
                    String val = asText(node);
                    target.setContextPath(val);
                    break;
                }
                case "element-name-strategy-ref": {
                    String val = asText(node);
                    target.setElementNameStrategyRef(val);
                    break;
                }
                case "encoding": {
                    String val = asText(node);
                    target.setEncoding(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "namespace-prefix-ref": {
                    String val = asText(node);
                    target.setNamespacePrefixRef(val);
                    break;
                }
                case "schema": {
                    String val = asText(node);
                    target.setSchema(val);
                    break;
                }
                case "version": {
                    String val = asText(node);
                    target.setVersion(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "sort",
            types = org.apache.camel.model.SortDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "comparator", type = "string"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean")
            }
    )
    public static class SortDefinitionDeserializer extends YamlDeserializerBase {
        public SortDefinitionDeserializer() {
            super(SortDefinition.class);
        }

        @Override
        protected SortDefinition newInstance() {
            return new SortDefinition();
        }

        @Override
        protected boolean setProperty(SortDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "comparator": {
                    String val = asText(node);
                    target.setComparator(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "spel",
            inline = true,
            types = org.apache.camel.model.language.SpELExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class SpELExpressionDeserializer extends YamlDeserializerBase {
        public SpELExpressionDeserializer() {
            super(SpELExpression.class);
        }

        @Override
        protected SpELExpression newInstance() {
            return new SpELExpression();
        }

        @Override
        protected SpELExpression newInstance(String value) {
            return new SpELExpression(value);
        }

        @Override
        protected boolean setProperty(SpELExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "split",
            types = org.apache.camel.model.SplitDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "aggregation-strategy", type = "string"),
                    @YamlProperty(name = "aggregation-strategy-method-allow-null", type = "boolean"),
                    @YamlProperty(name = "aggregation-strategy-method-name", type = "string"),
                    @YamlProperty(name = "delimiter", type = "string"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "executor-service", type = "string"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "on-prepare", type = "string"),
                    @YamlProperty(name = "parallel-aggregate", type = "boolean"),
                    @YamlProperty(name = "parallel-processing", type = "boolean"),
                    @YamlProperty(name = "share-unit-of-work", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition"),
                    @YamlProperty(name = "stop-on-exception", type = "boolean"),
                    @YamlProperty(name = "streaming", type = "boolean"),
                    @YamlProperty(name = "synchronous", type = "boolean"),
                    @YamlProperty(name = "timeout", type = "string")
            }
    )
    public static class SplitDefinitionDeserializer extends YamlDeserializerBase {
        public SplitDefinitionDeserializer() {
            super(SplitDefinition.class);
        }

        @Override
        protected SplitDefinition newInstance() {
            return new SplitDefinition();
        }

        @Override
        protected boolean setProperty(SplitDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "aggregation-strategy": {
                    String val = asText(node);
                    target.setAggregationStrategy(val);
                    break;
                }
                case "aggregation-strategy-method-allow-null": {
                    String val = asText(node);
                    target.setAggregationStrategyMethodAllowNull(val);
                    break;
                }
                case "aggregation-strategy-method-name": {
                    String val = asText(node);
                    target.setAggregationStrategyMethodName(val);
                    break;
                }
                case "delimiter": {
                    String val = asText(node);
                    target.setDelimiter(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "executor-service": {
                    String val = asText(node);
                    target.setExecutorService(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "on-prepare": {
                    String val = asText(node);
                    target.setOnPrepare(val);
                    break;
                }
                case "parallel-aggregate": {
                    String val = asText(node);
                    target.setParallelAggregate(val);
                    break;
                }
                case "parallel-processing": {
                    String val = asText(node);
                    target.setParallelProcessing(val);
                    break;
                }
                case "share-unit-of-work": {
                    String val = asText(node);
                    target.setShareUnitOfWork(val);
                    break;
                }
                case "stop-on-exception": {
                    String val = asText(node);
                    target.setStopOnException(val);
                    break;
                }
                case "streaming": {
                    String val = asText(node);
                    target.setStreaming(val);
                    break;
                }
                case "synchronous": {
                    String val = asText(node);
                    target.setSynchronous(val);
                    break;
                }
                case "timeout": {
                    String val = asText(node);
                    target.setTimeout(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "spring-transaction-error-handler",
                    "springTransactionErrorHandler"
            },
            types = org.apache.camel.model.errorhandler.SpringTransactionErrorHandlerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "executor-service-ref", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "level", type = "enum:TRACE,DEBUG,INFO,WARN,ERROR,OFF"),
                    @YamlProperty(name = "log-name", type = "string"),
                    @YamlProperty(name = "logger-ref", type = "string"),
                    @YamlProperty(name = "on-exception-occurred-ref", type = "string"),
                    @YamlProperty(name = "on-prepare-failure-ref", type = "string"),
                    @YamlProperty(name = "on-redelivery-ref", type = "string"),
                    @YamlProperty(name = "redelivery-policy", type = "object:org.apache.camel.model.RedeliveryPolicyDefinition"),
                    @YamlProperty(name = "redelivery-policy-ref", type = "string"),
                    @YamlProperty(name = "retry-while-ref", type = "string"),
                    @YamlProperty(name = "rollback-logging-level", type = "enum:TRACE,DEBUG,INFO,WARN,ERROR,OFF"),
                    @YamlProperty(name = "transacted-policy-ref", type = "string"),
                    @YamlProperty(name = "use-original-body", type = "boolean"),
                    @YamlProperty(name = "use-original-message", type = "boolean")
            }
    )
    public static class SpringTransactionErrorHandlerDefinitionDeserializer extends YamlDeserializerBase {
        public SpringTransactionErrorHandlerDefinitionDeserializer() {
            super(SpringTransactionErrorHandlerDefinition.class);
        }

        @Override
        protected SpringTransactionErrorHandlerDefinition newInstance() {
            return new SpringTransactionErrorHandlerDefinition();
        }

        @Override
        protected boolean setProperty(SpringTransactionErrorHandlerDefinition target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "executor-service-ref": {
                    String val = asText(node);
                    target.setExecutorServiceRef(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "level": {
                    String val = asText(node);
                    target.setLevel(val);
                    break;
                }
                case "log-name": {
                    String val = asText(node);
                    target.setLogName(val);
                    break;
                }
                case "logger-ref": {
                    String val = asText(node);
                    target.setLoggerRef(val);
                    break;
                }
                case "on-exception-occurred-ref": {
                    String val = asText(node);
                    target.setOnExceptionOccurredRef(val);
                    break;
                }
                case "on-prepare-failure-ref": {
                    String val = asText(node);
                    target.setOnPrepareFailureRef(val);
                    break;
                }
                case "on-redelivery-ref": {
                    String val = asText(node);
                    target.setOnRedeliveryRef(val);
                    break;
                }
                case "redelivery-policy": {
                    org.apache.camel.model.RedeliveryPolicyDefinition val = asType(node, org.apache.camel.model.RedeliveryPolicyDefinition.class);
                    target.setRedeliveryPolicy(val);
                    break;
                }
                case "redelivery-policy-ref": {
                    String val = asText(node);
                    target.setRedeliveryPolicyRef(val);
                    break;
                }
                case "retry-while-ref": {
                    String val = asText(node);
                    target.setRetryWhileRef(val);
                    break;
                }
                case "rollback-logging-level": {
                    String val = asText(node);
                    target.setRollbackLoggingLevel(val);
                    break;
                }
                case "transacted-policy-ref": {
                    String val = asText(node);
                    target.setTransactedPolicyRef(val);
                    break;
                }
                case "use-original-body": {
                    String val = asText(node);
                    target.setUseOriginalBody(val);
                    break;
                }
                case "use-original-message": {
                    String val = asText(node);
                    target.setUseOriginalMessage(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "static-service-discovery",
                    "staticServiceDiscovery"
            },
            types = org.apache.camel.model.cloud.StaticServiceCallServiceDiscoveryConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "servers", type = "array:string")
            }
    )
    public static class StaticServiceCallServiceDiscoveryConfigurationDeserializer extends YamlDeserializerBase {
        public StaticServiceCallServiceDiscoveryConfigurationDeserializer() {
            super(StaticServiceCallServiceDiscoveryConfiguration.class);
        }

        @Override
        protected StaticServiceCallServiceDiscoveryConfiguration newInstance() {
            return new StaticServiceCallServiceDiscoveryConfiguration();
        }

        @Override
        protected boolean setProperty(StaticServiceCallServiceDiscoveryConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                case "servers": {
                    java.util.List val = asStringList(node);
                    target.setServers(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "step",
            types = org.apache.camel.model.StepDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class StepDefinitionDeserializer extends YamlDeserializerBase {
        public StepDefinitionDeserializer() {
            super(StepDefinition.class);
        }

        @Override
        protected StepDefinition newInstance() {
            return new StepDefinition();
        }

        @Override
        protected boolean setProperty(StepDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "sticky",
            types = org.apache.camel.model.loadbalancer.StickyLoadBalancerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "correlation-expression", type = "object:org.apache.camel.model.ExpressionSubElementDefinition"),
                    @YamlProperty(name = "id", type = "string")
            }
    )
    public static class StickyLoadBalancerDefinitionDeserializer extends YamlDeserializerBase {
        public StickyLoadBalancerDefinitionDeserializer() {
            super(StickyLoadBalancerDefinition.class);
        }

        @Override
        protected StickyLoadBalancerDefinition newInstance() {
            return new StickyLoadBalancerDefinition();
        }

        @Override
        protected boolean setProperty(StickyLoadBalancerDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "correlation-expression": {
                    org.apache.camel.model.ExpressionSubElementDefinition val = asType(node, org.apache.camel.model.ExpressionSubElementDefinition.class);
                    target.setCorrelationExpression(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "stop",
            types = org.apache.camel.model.StopDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean")
            }
    )
    public static class StopDefinitionDeserializer extends YamlDeserializerBase {
        public StopDefinitionDeserializer() {
            super(StopDefinition.class);
        }

        @Override
        protected StopDefinition newInstance() {
            return new StopDefinition();
        }

        @Override
        protected boolean setProperty(StopDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "stream-config",
            types = org.apache.camel.model.config.StreamResequencerConfig.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "capacity", type = "number"),
                    @YamlProperty(name = "comparator", type = "string"),
                    @YamlProperty(name = "delivery-attempt-interval", type = "string"),
                    @YamlProperty(name = "ignore-invalid-exchanges", type = "boolean"),
                    @YamlProperty(name = "reject-old", type = "boolean"),
                    @YamlProperty(name = "timeout", type = "string")
            }
    )
    public static class StreamResequencerConfigDeserializer extends YamlDeserializerBase {
        public StreamResequencerConfigDeserializer() {
            super(StreamResequencerConfig.class);
        }

        @Override
        protected StreamResequencerConfig newInstance() {
            return new StreamResequencerConfig();
        }

        @Override
        protected boolean setProperty(StreamResequencerConfig target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "capacity": {
                    String val = asText(node);
                    target.setCapacity(val);
                    break;
                }
                case "comparator": {
                    String val = asText(node);
                    target.setComparator(val);
                    break;
                }
                case "delivery-attempt-interval": {
                    String val = asText(node);
                    target.setDeliveryAttemptInterval(val);
                    break;
                }
                case "ignore-invalid-exchanges": {
                    String val = asText(node);
                    target.setIgnoreInvalidExchanges(val);
                    break;
                }
                case "reject-old": {
                    String val = asText(node);
                    target.setRejectOld(val);
                    break;
                }
                case "timeout": {
                    String val = asText(node);
                    target.setTimeout(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "swift-mt",
                    "swiftMt"
            },
            inline = true,
            types = org.apache.camel.model.dataformat.SwiftMtDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "write-in-json", type = "boolean")
            }
    )
    public static class SwiftMtDataFormatDeserializer extends YamlDeserializerBase {
        public SwiftMtDataFormatDeserializer() {
            super(SwiftMtDataFormat.class);
        }

        @Override
        protected SwiftMtDataFormat newInstance() {
            return new SwiftMtDataFormat();
        }

        @Override
        protected SwiftMtDataFormat newInstance(String value) {
            return new SwiftMtDataFormat(value);
        }

        @Override
        protected boolean setProperty(SwiftMtDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "write-in-json": {
                    String val = asText(node);
                    target.setWriteInJson(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "swift-mx",
                    "swiftMx"
            },
            types = org.apache.camel.model.dataformat.SwiftMxDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "read-config-ref", type = "string"),
                    @YamlProperty(name = "read-message-id", type = "string"),
                    @YamlProperty(name = "write-config-ref", type = "string"),
                    @YamlProperty(name = "write-in-json", type = "boolean")
            }
    )
    public static class SwiftMxDataFormatDeserializer extends YamlDeserializerBase {
        public SwiftMxDataFormatDeserializer() {
            super(SwiftMxDataFormat.class);
        }

        @Override
        protected SwiftMxDataFormat newInstance() {
            return new SwiftMxDataFormat();
        }

        @Override
        protected boolean setProperty(SwiftMxDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "read-config-ref": {
                    String val = asText(node);
                    target.setReadConfigRef(val);
                    break;
                }
                case "read-message-id": {
                    String val = asText(node);
                    target.setReadMessageId(val);
                    break;
                }
                case "write-config-ref": {
                    String val = asText(node);
                    target.setWriteConfigRef(val);
                    break;
                }
                case "write-in-json": {
                    String val = asText(node);
                    target.setWriteInJson(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "syslog",
            types = org.apache.camel.model.dataformat.SyslogDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = @YamlProperty(name = "id", type = "string")
    )
    public static class SyslogDataFormatDeserializer extends YamlDeserializerBase {
        public SyslogDataFormatDeserializer() {
            super(SyslogDataFormat.class);
        }

        @Override
        protected SyslogDataFormat newInstance() {
            return new SyslogDataFormat();
        }

        @Override
        protected boolean setProperty(SyslogDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "tar-file",
                    "tarFile"
            },
            types = org.apache.camel.model.dataformat.TarFileDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-empty-directory", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "max-decompressed-size", type = "number"),
                    @YamlProperty(name = "preserve-path-elements", type = "boolean"),
                    @YamlProperty(name = "using-iterator", type = "boolean")
            }
    )
    public static class TarFileDataFormatDeserializer extends YamlDeserializerBase {
        public TarFileDataFormatDeserializer() {
            super(TarFileDataFormat.class);
        }

        @Override
        protected TarFileDataFormat newInstance() {
            return new TarFileDataFormat();
        }

        @Override
        protected boolean setProperty(TarFileDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-empty-directory": {
                    String val = asText(node);
                    target.setAllowEmptyDirectory(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "max-decompressed-size": {
                    String val = asText(node);
                    target.setMaxDecompressedSize(val);
                    break;
                }
                case "preserve-path-elements": {
                    String val = asText(node);
                    target.setPreservePathElements(val);
                    break;
                }
                case "using-iterator": {
                    String val = asText(node);
                    target.setUsingIterator(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "templated-route-parameter",
                    "templatedRouteParameter"
            },
            types = org.apache.camel.model.TemplatedRouteParameterDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "name", type = "string", required = true),
                    @YamlProperty(name = "value", type = "string", required = true)
            }
    )
    public static class TemplatedRouteParameterDefinitionDeserializer extends YamlDeserializerBase {
        public TemplatedRouteParameterDefinitionDeserializer() {
            super(TemplatedRouteParameterDefinition.class);
        }

        @Override
        protected TemplatedRouteParameterDefinition newInstance() {
            return new TemplatedRouteParameterDefinition();
        }

        @Override
        protected boolean setProperty(TemplatedRouteParameterDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "name": {
                    String val = asText(node);
                    target.setName(val);
                    break;
                }
                case "value": {
                    String val = asText(node);
                    target.setValue(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "thread-pool-profile",
                    "threadPoolProfile"
            },
            types = org.apache.camel.model.ThreadPoolProfileDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-core-thread-time-out", type = "boolean"),
                    @YamlProperty(name = "default-profile", type = "boolean"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "keep-alive-time", type = "number"),
                    @YamlProperty(name = "max-pool-size", type = "number"),
                    @YamlProperty(name = "max-queue-size", type = "number"),
                    @YamlProperty(name = "pool-size", type = "number"),
                    @YamlProperty(name = "rejected-policy", type = "enum:Abort,CallerRuns,DiscardOldest,Discard"),
                    @YamlProperty(name = "time-unit", type = "enum:NANOSECONDS,MICROSECONDS,MILLISECONDS,SECONDS,MINUTES,HOURS,DAYS")
            }
    )
    public static class ThreadPoolProfileDefinitionDeserializer extends YamlDeserializerBase {
        public ThreadPoolProfileDefinitionDeserializer() {
            super(ThreadPoolProfileDefinition.class);
        }

        @Override
        protected ThreadPoolProfileDefinition newInstance() {
            return new ThreadPoolProfileDefinition();
        }

        @Override
        protected boolean setProperty(ThreadPoolProfileDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-core-thread-time-out": {
                    String val = asText(node);
                    target.setAllowCoreThreadTimeOut(val);
                    break;
                }
                case "default-profile": {
                    String val = asText(node);
                    target.setDefaultProfile(val);
                    break;
                }
                case "keep-alive-time": {
                    String val = asText(node);
                    target.setKeepAliveTime(val);
                    break;
                }
                case "max-pool-size": {
                    String val = asText(node);
                    target.setMaxPoolSize(val);
                    break;
                }
                case "max-queue-size": {
                    String val = asText(node);
                    target.setMaxQueueSize(val);
                    break;
                }
                case "pool-size": {
                    String val = asText(node);
                    target.setPoolSize(val);
                    break;
                }
                case "rejected-policy": {
                    String val = asText(node);
                    target.setRejectedPolicy(val);
                    break;
                }
                case "time-unit": {
                    String val = asText(node);
                    target.setTimeUnit(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "threads",
            types = org.apache.camel.model.ThreadsDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-core-thread-time-out", type = "boolean"),
                    @YamlProperty(name = "caller-runs-when-rejected", type = "string"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "executor-service", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "keep-alive-time", type = "number"),
                    @YamlProperty(name = "max-pool-size", type = "number"),
                    @YamlProperty(name = "max-queue-size", type = "number"),
                    @YamlProperty(name = "pool-size", type = "number"),
                    @YamlProperty(name = "rejected-policy", type = "enum:Abort,CallerRuns,DiscardOldest,Discard"),
                    @YamlProperty(name = "thread-name", type = "string"),
                    @YamlProperty(name = "time-unit", type = "enum:NANOSECONDS,MICROSECONDS,MILLISECONDS,SECONDS,MINUTES,HOURS,DAYS")
            }
    )
    public static class ThreadsDefinitionDeserializer extends YamlDeserializerBase {
        public ThreadsDefinitionDeserializer() {
            super(ThreadsDefinition.class);
        }

        @Override
        protected ThreadsDefinition newInstance() {
            return new ThreadsDefinition();
        }

        @Override
        protected boolean setProperty(ThreadsDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-core-thread-time-out": {
                    String val = asText(node);
                    target.setAllowCoreThreadTimeOut(val);
                    break;
                }
                case "caller-runs-when-rejected": {
                    String val = asText(node);
                    target.setCallerRunsWhenRejected(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "executor-service": {
                    String val = asText(node);
                    target.setExecutorService(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "keep-alive-time": {
                    String val = asText(node);
                    target.setKeepAliveTime(val);
                    break;
                }
                case "max-pool-size": {
                    String val = asText(node);
                    target.setMaxPoolSize(val);
                    break;
                }
                case "max-queue-size": {
                    String val = asText(node);
                    target.setMaxQueueSize(val);
                    break;
                }
                case "pool-size": {
                    String val = asText(node);
                    target.setPoolSize(val);
                    break;
                }
                case "rejected-policy": {
                    String val = asText(node);
                    target.setRejectedPolicy(val);
                    break;
                }
                case "thread-name": {
                    String val = asText(node);
                    target.setThreadName(val);
                    break;
                }
                case "time-unit": {
                    String val = asText(node);
                    target.setTimeUnit(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "thrift",
            inline = true,
            types = org.apache.camel.model.dataformat.ThriftDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "content-type-format", type = "enum:binary,json,sjson"),
                    @YamlProperty(name = "content-type-header", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "instance-class", type = "string")
            }
    )
    public static class ThriftDataFormatDeserializer extends YamlDeserializerBase {
        public ThriftDataFormatDeserializer() {
            super(ThriftDataFormat.class);
        }

        @Override
        protected ThriftDataFormat newInstance() {
            return new ThriftDataFormat();
        }

        @Override
        protected ThriftDataFormat newInstance(String value) {
            return new ThriftDataFormat(value);
        }

        @Override
        protected boolean setProperty(ThriftDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "content-type-format": {
                    String val = asText(node);
                    target.setContentTypeFormat(val);
                    break;
                }
                case "content-type-header": {
                    String val = asText(node);
                    target.setContentTypeHeader(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "instance-class": {
                    String val = asText(node);
                    target.setInstanceClass(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "throttle",
            types = org.apache.camel.model.ThrottleDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "async-delayed", type = "boolean"),
                    @YamlProperty(name = "caller-runs-when-rejected", type = "boolean"),
                    @YamlProperty(name = "correlation-expression", type = "object:org.apache.camel.model.ExpressionSubElementDefinition"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "executor-service", type = "string"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "reject-execution", type = "boolean"),
                    @YamlProperty(name = "time-period-millis", type = "string")
            }
    )
    public static class ThrottleDefinitionDeserializer extends YamlDeserializerBase {
        public ThrottleDefinitionDeserializer() {
            super(ThrottleDefinition.class);
        }

        @Override
        protected ThrottleDefinition newInstance() {
            return new ThrottleDefinition();
        }

        @Override
        protected boolean setProperty(ThrottleDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "async-delayed": {
                    String val = asText(node);
                    target.setAsyncDelayed(val);
                    break;
                }
                case "caller-runs-when-rejected": {
                    String val = asText(node);
                    target.setCallerRunsWhenRejected(val);
                    break;
                }
                case "correlation-expression": {
                    org.apache.camel.model.ExpressionSubElementDefinition val = asType(node, org.apache.camel.model.ExpressionSubElementDefinition.class);
                    target.setCorrelationExpression(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "executor-service": {
                    String val = asText(node);
                    target.setExecutorService(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "reject-execution": {
                    String val = asText(node);
                    target.setRejectExecution(val);
                    break;
                }
                case "time-period-millis": {
                    String val = asText(node);
                    target.setTimePeriodMillis(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "throw-exception",
                    "throwException"
            },
            types = org.apache.camel.model.ThrowExceptionDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "exception-type", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "message", type = "string"),
                    @YamlProperty(name = "ref", type = "string")
            }
    )
    public static class ThrowExceptionDefinitionDeserializer extends YamlDeserializerBase {
        public ThrowExceptionDefinitionDeserializer() {
            super(ThrowExceptionDefinition.class);
        }

        @Override
        protected ThrowExceptionDefinition newInstance() {
            return new ThrowExceptionDefinition();
        }

        @Override
        protected boolean setProperty(ThrowExceptionDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "exception-type": {
                    String val = asText(node);
                    target.setExceptionType(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "message": {
                    String val = asText(node);
                    target.setMessage(val);
                    break;
                }
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "tidy-markup",
                    "tidyMarkup"
            },
            types = org.apache.camel.model.dataformat.TidyMarkupDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "data-object-type", type = "enum:org.w3c.dom.Node,java.lang.String"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "omit-xml-declaration", type = "boolean")
            }
    )
    public static class TidyMarkupDataFormatDeserializer extends YamlDeserializerBase {
        public TidyMarkupDataFormatDeserializer() {
            super(TidyMarkupDataFormat.class);
        }

        @Override
        protected TidyMarkupDataFormat newInstance() {
            return new TidyMarkupDataFormat();
        }

        @Override
        protected boolean setProperty(TidyMarkupDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "data-object-type": {
                    String val = asText(node);
                    target.setDataObjectTypeName(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "omit-xml-declaration": {
                    String val = asText(node);
                    target.setOmitXmlDeclaration(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "to",
            inline = true,
            types = org.apache.camel.model.ToDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "parameters", type = "object"),
                    @YamlProperty(name = "pattern", type = "enum:InOnly,InOut,InOptionalOut"),
                    @YamlProperty(name = "uri", type = "string", required = true)
            }
    )
    public static class ToDefinitionDeserializer extends YamlDeserializerEndpointAwareBase {
        public ToDefinitionDeserializer() {
            super(ToDefinition.class);
        }

        @Override
        protected ToDefinition newInstance() {
            return new ToDefinition();
        }

        @Override
        protected ToDefinition newInstance(String value) {
            return new ToDefinition(value);
        }

        @Override
        protected void setEndpointUri(CamelContext camelContext, Node node, ToDefinition target,
                Map parameters) {
            target.setUri(org.apache.camel.dsl.yaml.common.YamlSupport.createEndpointUri(camelContext, node, target.getUri(), parameters));
        }

        @Override
        protected boolean setProperty(ToDefinition target, String propertyKey, String propertyName,
                Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "pattern": {
                    String val = asText(node);
                    target.setPattern(val);
                    break;
                }
                case "uri": {
                    String val = asText(node);
                    target.setUri(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "to-d",
                    "toD"
            },
            inline = true,
            types = org.apache.camel.model.ToDynamicDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-optimised-components", type = "boolean"),
                    @YamlProperty(name = "auto-start-components", type = "boolean"),
                    @YamlProperty(name = "cache-size", type = "number"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ignore-invalid-endpoint", type = "boolean"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "parameters", type = "object"),
                    @YamlProperty(name = "pattern", type = "enum:InOnly,InOut,InOptionalOut"),
                    @YamlProperty(name = "uri", type = "string", required = true)
            }
    )
    public static class ToDynamicDefinitionDeserializer extends YamlDeserializerEndpointAwareBase {
        public ToDynamicDefinitionDeserializer() {
            super(ToDynamicDefinition.class);
        }

        @Override
        protected ToDynamicDefinition newInstance() {
            return new ToDynamicDefinition();
        }

        @Override
        protected ToDynamicDefinition newInstance(String value) {
            return new ToDynamicDefinition(value);
        }

        @Override
        protected void setEndpointUri(CamelContext camelContext, Node node,
                ToDynamicDefinition target, Map parameters) {
            target.setUri(org.apache.camel.dsl.yaml.common.YamlSupport.createEndpointUri(camelContext, node, target.getUri(), parameters));
        }

        @Override
        protected boolean setProperty(ToDynamicDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-optimised-components": {
                    String val = asText(node);
                    target.setAllowOptimisedComponents(val);
                    break;
                }
                case "auto-start-components": {
                    String val = asText(node);
                    target.setAutoStartComponents(val);
                    break;
                }
                case "cache-size": {
                    String val = asText(node);
                    target.setCacheSize(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "ignore-invalid-endpoint": {
                    String val = asText(node);
                    target.setIgnoreInvalidEndpoint(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "pattern": {
                    String val = asText(node);
                    target.setPattern(val);
                    break;
                }
                case "uri": {
                    String val = asText(node);
                    target.setUri(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "tokenize",
            inline = true,
            types = org.apache.camel.model.language.TokenizerExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "end-token", type = "string"),
                    @YamlProperty(name = "group", type = "string"),
                    @YamlProperty(name = "group-delimiter", type = "string"),
                    @YamlProperty(name = "header-name", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "include-tokens", type = "boolean"),
                    @YamlProperty(name = "inherit-namespace-tag-name", type = "string"),
                    @YamlProperty(name = "property-name", type = "string"),
                    @YamlProperty(name = "regex", type = "boolean"),
                    @YamlProperty(name = "skip-first", type = "boolean"),
                    @YamlProperty(name = "token", type = "string", required = true),
                    @YamlProperty(name = "trim", type = "boolean"),
                    @YamlProperty(name = "xml", type = "boolean")
            }
    )
    public static class TokenizerExpressionDeserializer extends YamlDeserializerBase {
        public TokenizerExpressionDeserializer() {
            super(TokenizerExpression.class);
        }

        @Override
        protected TokenizerExpression newInstance() {
            return new TokenizerExpression();
        }

        @Override
        protected TokenizerExpression newInstance(String value) {
            return new TokenizerExpression(value);
        }

        @Override
        protected boolean setProperty(TokenizerExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "end-token": {
                    String val = asText(node);
                    target.setEndToken(val);
                    break;
                }
                case "group": {
                    String val = asText(node);
                    target.setGroup(val);
                    break;
                }
                case "group-delimiter": {
                    String val = asText(node);
                    target.setGroupDelimiter(val);
                    break;
                }
                case "header-name": {
                    String val = asText(node);
                    target.setHeaderName(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "include-tokens": {
                    String val = asText(node);
                    target.setIncludeTokens(val);
                    break;
                }
                case "inherit-namespace-tag-name": {
                    String val = asText(node);
                    target.setInheritNamespaceTagName(val);
                    break;
                }
                case "property-name": {
                    String val = asText(node);
                    target.setPropertyName(val);
                    break;
                }
                case "regex": {
                    String val = asText(node);
                    target.setRegex(val);
                    break;
                }
                case "skip-first": {
                    String val = asText(node);
                    target.setSkipFirst(val);
                    break;
                }
                case "token": {
                    String val = asText(node);
                    target.setToken(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                case "xml": {
                    String val = asText(node);
                    target.setXml(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "topic",
            types = org.apache.camel.model.loadbalancer.TopicLoadBalancerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = @YamlProperty(name = "id", type = "string")
    )
    public static class TopicLoadBalancerDefinitionDeserializer extends YamlDeserializerBase {
        public TopicLoadBalancerDefinitionDeserializer() {
            super(TopicLoadBalancerDefinition.class);
        }

        @Override
        protected TopicLoadBalancerDefinition newInstance() {
            return new TopicLoadBalancerDefinition();
        }

        @Override
        protected boolean setProperty(TopicLoadBalancerDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "transacted",
            types = org.apache.camel.model.TransactedDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "ref", type = "string"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class TransactedDefinitionDeserializer extends YamlDeserializerBase {
        public TransactedDefinitionDeserializer() {
            super(TransactedDefinition.class);
        }

        @Override
        protected TransactedDefinition newInstance() {
            return new TransactedDefinition();
        }

        @Override
        protected boolean setProperty(TransactedDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "ref": {
                    String val = asText(node);
                    target.setRef(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "transform",
            types = org.apache.camel.model.TransformDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean")
            }
    )
    public static class TransformDefinitionDeserializer extends YamlDeserializerBase {
        public TransformDefinitionDeserializer() {
            super(TransformDefinition.class);
        }

        @Override
        protected TransformDefinition newInstance() {
            return new TransformDefinition();
        }

        @Override
        protected boolean setProperty(TransformDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "transformers",
            types = org.apache.camel.model.transformer.TransformersDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "custom-transformer", type = "object:org.apache.camel.model.transformer.CustomTransformerDefinition"),
                    @YamlProperty(name = "data-format-transformer", type = "object:org.apache.camel.model.transformer.DataFormatTransformerDefinition"),
                    @YamlProperty(name = "endpoint-transformer", type = "object:org.apache.camel.model.transformer.EndpointTransformerDefinition")
            }
    )
    public static class TransformersDefinitionDeserializer extends YamlDeserializerBase {
        public TransformersDefinitionDeserializer() {
            super(TransformersDefinition.class);
        }

        @Override
        protected TransformersDefinition newInstance() {
            return new TransformersDefinition();
        }

        @Override
        protected boolean setProperty(TransformersDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "transformers": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "data-format-transformer": {
                    org.apache.camel.model.transformer.DataFormatTransformerDefinition val = asType(node, org.apache.camel.model.transformer.DataFormatTransformerDefinition.class);
                    java.util.List existing = target.getTransformers();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setTransformers(existing);
                    break;
                }
                case "endpoint-transformer": {
                    org.apache.camel.model.transformer.EndpointTransformerDefinition val = asType(node, org.apache.camel.model.transformer.EndpointTransformerDefinition.class);
                    java.util.List existing = target.getTransformers();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setTransformers(existing);
                    break;
                }
                case "custom-transformer": {
                    org.apache.camel.model.transformer.CustomTransformerDefinition val = asType(node, org.apache.camel.model.transformer.CustomTransformerDefinition.class);
                    java.util.List existing = target.getTransformers();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setTransformers(existing);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "do-try",
                    "doTry"
            },
            types = org.apache.camel.model.TryDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "do-catch", type = "array:org.apache.camel.model.CatchDefinition"),
                    @YamlProperty(name = "do-finally", type = "object:org.apache.camel.model.FinallyDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class TryDefinitionDeserializer extends YamlDeserializerBase {
        public TryDefinitionDeserializer() {
            super(TryDefinition.class);
        }

        @Override
        protected TryDefinition newInstance() {
            return new TryDefinition();
        }

        @Override
        protected boolean setProperty(TryDefinition target, String propertyKey, String propertyName,
                Node node) {
            switch(propertyKey) {
                case "do-catch": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.CatchDefinition.class);
                    target.setCatchClauses(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "do-finally": {
                    org.apache.camel.model.FinallyDefinition val = asType(node, org.apache.camel.model.FinallyDefinition.class);
                    target.setFinallyClause(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "univocity-csv",
                    "univocityCsv"
            },
            types = org.apache.camel.model.dataformat.UniVocityCsvDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "as-map", type = "boolean"),
                    @YamlProperty(name = "comment", type = "string"),
                    @YamlProperty(name = "delimiter", type = "string"),
                    @YamlProperty(name = "empty-value", type = "string"),
                    @YamlProperty(name = "header-extraction-enabled", type = "boolean"),
                    @YamlProperty(name = "headers-disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ignore-leading-whitespaces", type = "boolean"),
                    @YamlProperty(name = "ignore-trailing-whitespaces", type = "boolean"),
                    @YamlProperty(name = "lazy-load", type = "boolean"),
                    @YamlProperty(name = "line-separator", type = "string"),
                    @YamlProperty(name = "normalized-line-separator", type = "string"),
                    @YamlProperty(name = "null-value", type = "string"),
                    @YamlProperty(name = "number-of-records-to-read", type = "number"),
                    @YamlProperty(name = "quote", type = "string"),
                    @YamlProperty(name = "quote-all-fields", type = "boolean"),
                    @YamlProperty(name = "quote-escape", type = "string"),
                    @YamlProperty(name = "skip-empty-lines", type = "boolean"),
                    @YamlProperty(name = "univocity-header", type = "array:org.apache.camel.model.dataformat.UniVocityHeader")
            }
    )
    public static class UniVocityCsvDataFormatDeserializer extends YamlDeserializerBase {
        public UniVocityCsvDataFormatDeserializer() {
            super(UniVocityCsvDataFormat.class);
        }

        @Override
        protected UniVocityCsvDataFormat newInstance() {
            return new UniVocityCsvDataFormat();
        }

        @Override
        protected boolean setProperty(UniVocityCsvDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "as-map": {
                    String val = asText(node);
                    target.setAsMap(val);
                    break;
                }
                case "comment": {
                    String val = asText(node);
                    target.setComment(val);
                    break;
                }
                case "delimiter": {
                    String val = asText(node);
                    target.setDelimiter(val);
                    break;
                }
                case "empty-value": {
                    String val = asText(node);
                    target.setEmptyValue(val);
                    break;
                }
                case "header-extraction-enabled": {
                    String val = asText(node);
                    target.setHeaderExtractionEnabled(val);
                    break;
                }
                case "univocity-header": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.dataformat.UniVocityHeader.class);
                    target.setHeaders(val);
                    break;
                }
                case "headers-disabled": {
                    String val = asText(node);
                    target.setHeadersDisabled(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "ignore-leading-whitespaces": {
                    String val = asText(node);
                    target.setIgnoreLeadingWhitespaces(val);
                    break;
                }
                case "ignore-trailing-whitespaces": {
                    String val = asText(node);
                    target.setIgnoreTrailingWhitespaces(val);
                    break;
                }
                case "lazy-load": {
                    String val = asText(node);
                    target.setLazyLoad(val);
                    break;
                }
                case "line-separator": {
                    String val = asText(node);
                    target.setLineSeparator(val);
                    break;
                }
                case "normalized-line-separator": {
                    String val = asText(node);
                    target.setNormalizedLineSeparator(val);
                    break;
                }
                case "null-value": {
                    String val = asText(node);
                    target.setNullValue(val);
                    break;
                }
                case "number-of-records-to-read": {
                    String val = asText(node);
                    target.setNumberOfRecordsToRead(val);
                    break;
                }
                case "quote": {
                    String val = asText(node);
                    target.setQuote(val);
                    break;
                }
                case "quote-all-fields": {
                    String val = asText(node);
                    target.setQuoteAllFields(val);
                    break;
                }
                case "quote-escape": {
                    String val = asText(node);
                    target.setQuoteEscape(val);
                    break;
                }
                case "skip-empty-lines": {
                    String val = asText(node);
                    target.setSkipEmptyLines(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "univocity-fixed",
                    "univocityFixed"
            },
            types = org.apache.camel.model.dataformat.UniVocityFixedDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "as-map", type = "boolean"),
                    @YamlProperty(name = "comment", type = "string"),
                    @YamlProperty(name = "empty-value", type = "string"),
                    @YamlProperty(name = "header-extraction-enabled", type = "boolean"),
                    @YamlProperty(name = "headers-disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ignore-leading-whitespaces", type = "boolean"),
                    @YamlProperty(name = "ignore-trailing-whitespaces", type = "boolean"),
                    @YamlProperty(name = "lazy-load", type = "boolean"),
                    @YamlProperty(name = "line-separator", type = "string"),
                    @YamlProperty(name = "normalized-line-separator", type = "string"),
                    @YamlProperty(name = "null-value", type = "string"),
                    @YamlProperty(name = "number-of-records-to-read", type = "number"),
                    @YamlProperty(name = "padding", type = "string"),
                    @YamlProperty(name = "record-ends-on-newline", type = "boolean"),
                    @YamlProperty(name = "skip-empty-lines", type = "boolean"),
                    @YamlProperty(name = "skip-trailing-chars-until-newline", type = "boolean"),
                    @YamlProperty(name = "univocity-header", type = "array:org.apache.camel.model.dataformat.UniVocityHeader")
            }
    )
    public static class UniVocityFixedDataFormatDeserializer extends YamlDeserializerBase {
        public UniVocityFixedDataFormatDeserializer() {
            super(UniVocityFixedDataFormat.class);
        }

        @Override
        protected UniVocityFixedDataFormat newInstance() {
            return new UniVocityFixedDataFormat();
        }

        @Override
        protected boolean setProperty(UniVocityFixedDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "as-map": {
                    String val = asText(node);
                    target.setAsMap(val);
                    break;
                }
                case "comment": {
                    String val = asText(node);
                    target.setComment(val);
                    break;
                }
                case "empty-value": {
                    String val = asText(node);
                    target.setEmptyValue(val);
                    break;
                }
                case "header-extraction-enabled": {
                    String val = asText(node);
                    target.setHeaderExtractionEnabled(val);
                    break;
                }
                case "univocity-header": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.dataformat.UniVocityHeader.class);
                    target.setHeaders(val);
                    break;
                }
                case "headers-disabled": {
                    String val = asText(node);
                    target.setHeadersDisabled(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "ignore-leading-whitespaces": {
                    String val = asText(node);
                    target.setIgnoreLeadingWhitespaces(val);
                    break;
                }
                case "ignore-trailing-whitespaces": {
                    String val = asText(node);
                    target.setIgnoreTrailingWhitespaces(val);
                    break;
                }
                case "lazy-load": {
                    String val = asText(node);
                    target.setLazyLoad(val);
                    break;
                }
                case "line-separator": {
                    String val = asText(node);
                    target.setLineSeparator(val);
                    break;
                }
                case "normalized-line-separator": {
                    String val = asText(node);
                    target.setNormalizedLineSeparator(val);
                    break;
                }
                case "null-value": {
                    String val = asText(node);
                    target.setNullValue(val);
                    break;
                }
                case "number-of-records-to-read": {
                    String val = asText(node);
                    target.setNumberOfRecordsToRead(val);
                    break;
                }
                case "padding": {
                    String val = asText(node);
                    target.setPadding(val);
                    break;
                }
                case "record-ends-on-newline": {
                    String val = asText(node);
                    target.setRecordEndsOnNewline(val);
                    break;
                }
                case "skip-empty-lines": {
                    String val = asText(node);
                    target.setSkipEmptyLines(val);
                    break;
                }
                case "skip-trailing-chars-until-newline": {
                    String val = asText(node);
                    target.setSkipTrailingCharsUntilNewline(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "univocity-header",
                    "univocityHeader"
            },
            types = org.apache.camel.model.dataformat.UniVocityHeader.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "length", type = "string"),
                    @YamlProperty(name = "name", type = "string")
            }
    )
    public static class UniVocityHeaderDeserializer extends YamlDeserializerBase {
        public UniVocityHeaderDeserializer() {
            super(UniVocityHeader.class);
        }

        @Override
        protected UniVocityHeader newInstance() {
            return new UniVocityHeader();
        }

        @Override
        protected boolean setProperty(UniVocityHeader target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "length": {
                    String val = asText(node);
                    target.setLength(val);
                    break;
                }
                case "name": {
                    String val = asText(node);
                    target.setName(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "univocity-tsv",
                    "univocityTsv"
            },
            types = org.apache.camel.model.dataformat.UniVocityTsvDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "as-map", type = "boolean"),
                    @YamlProperty(name = "comment", type = "string"),
                    @YamlProperty(name = "empty-value", type = "string"),
                    @YamlProperty(name = "escape-char", type = "string"),
                    @YamlProperty(name = "header-extraction-enabled", type = "boolean"),
                    @YamlProperty(name = "headers-disabled", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ignore-leading-whitespaces", type = "boolean"),
                    @YamlProperty(name = "ignore-trailing-whitespaces", type = "boolean"),
                    @YamlProperty(name = "lazy-load", type = "boolean"),
                    @YamlProperty(name = "line-separator", type = "string"),
                    @YamlProperty(name = "normalized-line-separator", type = "string"),
                    @YamlProperty(name = "null-value", type = "string"),
                    @YamlProperty(name = "number-of-records-to-read", type = "number"),
                    @YamlProperty(name = "skip-empty-lines", type = "boolean"),
                    @YamlProperty(name = "univocity-header", type = "array:org.apache.camel.model.dataformat.UniVocityHeader")
            }
    )
    public static class UniVocityTsvDataFormatDeserializer extends YamlDeserializerBase {
        public UniVocityTsvDataFormatDeserializer() {
            super(UniVocityTsvDataFormat.class);
        }

        @Override
        protected UniVocityTsvDataFormat newInstance() {
            return new UniVocityTsvDataFormat();
        }

        @Override
        protected boolean setProperty(UniVocityTsvDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "as-map": {
                    String val = asText(node);
                    target.setAsMap(val);
                    break;
                }
                case "comment": {
                    String val = asText(node);
                    target.setComment(val);
                    break;
                }
                case "empty-value": {
                    String val = asText(node);
                    target.setEmptyValue(val);
                    break;
                }
                case "escape-char": {
                    String val = asText(node);
                    target.setEscapeChar(val);
                    break;
                }
                case "header-extraction-enabled": {
                    String val = asText(node);
                    target.setHeaderExtractionEnabled(val);
                    break;
                }
                case "univocity-header": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.dataformat.UniVocityHeader.class);
                    target.setHeaders(val);
                    break;
                }
                case "headers-disabled": {
                    String val = asText(node);
                    target.setHeadersDisabled(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "ignore-leading-whitespaces": {
                    String val = asText(node);
                    target.setIgnoreLeadingWhitespaces(val);
                    break;
                }
                case "ignore-trailing-whitespaces": {
                    String val = asText(node);
                    target.setIgnoreTrailingWhitespaces(val);
                    break;
                }
                case "lazy-load": {
                    String val = asText(node);
                    target.setLazyLoad(val);
                    break;
                }
                case "line-separator": {
                    String val = asText(node);
                    target.setLineSeparator(val);
                    break;
                }
                case "normalized-line-separator": {
                    String val = asText(node);
                    target.setNormalizedLineSeparator(val);
                    break;
                }
                case "null-value": {
                    String val = asText(node);
                    target.setNullValue(val);
                    break;
                }
                case "number-of-records-to-read": {
                    String val = asText(node);
                    target.setNumberOfRecordsToRead(val);
                    break;
                }
                case "skip-empty-lines": {
                    String val = asText(node);
                    target.setSkipEmptyLines(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "unmarshal",
            types = org.apache.camel.model.UnmarshalDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-null-body", type = "boolean"),
                    @YamlProperty(name = "any23", type = "object:org.apache.camel.model.dataformat.Any23DataFormat"),
                    @YamlProperty(name = "asn1", type = "object:org.apache.camel.model.dataformat.ASN1DataFormat"),
                    @YamlProperty(name = "avro", type = "object:org.apache.camel.model.dataformat.AvroDataFormat"),
                    @YamlProperty(name = "barcode", type = "object:org.apache.camel.model.dataformat.BarcodeDataFormat"),
                    @YamlProperty(name = "base64", type = "object:org.apache.camel.model.dataformat.Base64DataFormat"),
                    @YamlProperty(name = "bindy", type = "object:org.apache.camel.model.dataformat.BindyDataFormat"),
                    @YamlProperty(name = "cbor", type = "object:org.apache.camel.model.dataformat.CBORDataFormat"),
                    @YamlProperty(name = "crypto", type = "object:org.apache.camel.model.dataformat.CryptoDataFormat"),
                    @YamlProperty(name = "csv", type = "object:org.apache.camel.model.dataformat.CsvDataFormat"),
                    @YamlProperty(name = "custom", type = "object:org.apache.camel.model.dataformat.CustomDataFormat"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "fhir-json", type = "object:org.apache.camel.model.dataformat.FhirJsonDataFormat"),
                    @YamlProperty(name = "fhir-xml", type = "object:org.apache.camel.model.dataformat.FhirXmlDataFormat"),
                    @YamlProperty(name = "flatpack", type = "object:org.apache.camel.model.dataformat.FlatpackDataFormat"),
                    @YamlProperty(name = "grok", type = "object:org.apache.camel.model.dataformat.GrokDataFormat"),
                    @YamlProperty(name = "gzip-deflater", type = "object:org.apache.camel.model.dataformat.GzipDeflaterDataFormat"),
                    @YamlProperty(name = "hl7", type = "object:org.apache.camel.model.dataformat.HL7DataFormat"),
                    @YamlProperty(name = "ical", type = "object:org.apache.camel.model.dataformat.IcalDataFormat"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "jackson-xml", type = "object:org.apache.camel.model.dataformat.JacksonXMLDataFormat"),
                    @YamlProperty(name = "jaxb", type = "object:org.apache.camel.model.dataformat.JaxbDataFormat"),
                    @YamlProperty(name = "json", type = "object:org.apache.camel.model.dataformat.JsonDataFormat"),
                    @YamlProperty(name = "json-api", type = "object:org.apache.camel.model.dataformat.JsonApiDataFormat"),
                    @YamlProperty(name = "lzf", type = "object:org.apache.camel.model.dataformat.LZFDataFormat"),
                    @YamlProperty(name = "mime-multipart", type = "object:org.apache.camel.model.dataformat.MimeMultipartDataFormat"),
                    @YamlProperty(name = "pgp", type = "object:org.apache.camel.model.dataformat.PGPDataFormat"),
                    @YamlProperty(name = "protobuf", type = "object:org.apache.camel.model.dataformat.ProtobufDataFormat"),
                    @YamlProperty(name = "rss", type = "object:org.apache.camel.model.dataformat.RssDataFormat"),
                    @YamlProperty(name = "soap", type = "object:org.apache.camel.model.dataformat.SoapDataFormat"),
                    @YamlProperty(name = "swift-mt", type = "object:org.apache.camel.model.dataformat.SwiftMtDataFormat"),
                    @YamlProperty(name = "swift-mx", type = "object:org.apache.camel.model.dataformat.SwiftMxDataFormat"),
                    @YamlProperty(name = "syslog", type = "object:org.apache.camel.model.dataformat.SyslogDataFormat"),
                    @YamlProperty(name = "tar-file", type = "object:org.apache.camel.model.dataformat.TarFileDataFormat"),
                    @YamlProperty(name = "thrift", type = "object:org.apache.camel.model.dataformat.ThriftDataFormat"),
                    @YamlProperty(name = "tidy-markup", type = "object:org.apache.camel.model.dataformat.TidyMarkupDataFormat"),
                    @YamlProperty(name = "univocity-csv", type = "object:org.apache.camel.model.dataformat.UniVocityCsvDataFormat"),
                    @YamlProperty(name = "univocity-fixed", type = "object:org.apache.camel.model.dataformat.UniVocityFixedDataFormat"),
                    @YamlProperty(name = "univocity-tsv", type = "object:org.apache.camel.model.dataformat.UniVocityTsvDataFormat"),
                    @YamlProperty(name = "xml-security", type = "object:org.apache.camel.model.dataformat.XMLSecurityDataFormat"),
                    @YamlProperty(name = "xstream", type = "object:org.apache.camel.model.dataformat.XStreamDataFormat"),
                    @YamlProperty(name = "yaml", type = "object:org.apache.camel.model.dataformat.YAMLDataFormat"),
                    @YamlProperty(name = "zip-deflater", type = "object:org.apache.camel.model.dataformat.ZipDeflaterDataFormat"),
                    @YamlProperty(name = "zip-file", type = "object:org.apache.camel.model.dataformat.ZipFileDataFormat")
            }
    )
    public static class UnmarshalDefinitionDeserializer extends YamlDeserializerBase {
        public UnmarshalDefinitionDeserializer() {
            super(UnmarshalDefinition.class);
        }

        @Override
        protected UnmarshalDefinition newInstance() {
            return new UnmarshalDefinition();
        }

        @Override
        protected boolean setProperty(UnmarshalDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-null-body": {
                    String val = asText(node);
                    target.setAllowNullBody(val);
                    break;
                }
                case "data-format-type": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "any23": {
                    org.apache.camel.model.dataformat.Any23DataFormat val = asType(node, org.apache.camel.model.dataformat.Any23DataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "asn1": {
                    org.apache.camel.model.dataformat.ASN1DataFormat val = asType(node, org.apache.camel.model.dataformat.ASN1DataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "avro": {
                    org.apache.camel.model.dataformat.AvroDataFormat val = asType(node, org.apache.camel.model.dataformat.AvroDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "barcode": {
                    org.apache.camel.model.dataformat.BarcodeDataFormat val = asType(node, org.apache.camel.model.dataformat.BarcodeDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "base64": {
                    org.apache.camel.model.dataformat.Base64DataFormat val = asType(node, org.apache.camel.model.dataformat.Base64DataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "bindy": {
                    org.apache.camel.model.dataformat.BindyDataFormat val = asType(node, org.apache.camel.model.dataformat.BindyDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "cbor": {
                    org.apache.camel.model.dataformat.CBORDataFormat val = asType(node, org.apache.camel.model.dataformat.CBORDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "crypto": {
                    org.apache.camel.model.dataformat.CryptoDataFormat val = asType(node, org.apache.camel.model.dataformat.CryptoDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "csv": {
                    org.apache.camel.model.dataformat.CsvDataFormat val = asType(node, org.apache.camel.model.dataformat.CsvDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "custom": {
                    org.apache.camel.model.dataformat.CustomDataFormat val = asType(node, org.apache.camel.model.dataformat.CustomDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "fhir-json": {
                    org.apache.camel.model.dataformat.FhirJsonDataFormat val = asType(node, org.apache.camel.model.dataformat.FhirJsonDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "fhir-xml": {
                    org.apache.camel.model.dataformat.FhirXmlDataFormat val = asType(node, org.apache.camel.model.dataformat.FhirXmlDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "flatpack": {
                    org.apache.camel.model.dataformat.FlatpackDataFormat val = asType(node, org.apache.camel.model.dataformat.FlatpackDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "grok": {
                    org.apache.camel.model.dataformat.GrokDataFormat val = asType(node, org.apache.camel.model.dataformat.GrokDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "gzip-deflater": {
                    org.apache.camel.model.dataformat.GzipDeflaterDataFormat val = asType(node, org.apache.camel.model.dataformat.GzipDeflaterDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "hl7": {
                    org.apache.camel.model.dataformat.HL7DataFormat val = asType(node, org.apache.camel.model.dataformat.HL7DataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "ical": {
                    org.apache.camel.model.dataformat.IcalDataFormat val = asType(node, org.apache.camel.model.dataformat.IcalDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "jackson-xml": {
                    org.apache.camel.model.dataformat.JacksonXMLDataFormat val = asType(node, org.apache.camel.model.dataformat.JacksonXMLDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "jaxb": {
                    org.apache.camel.model.dataformat.JaxbDataFormat val = asType(node, org.apache.camel.model.dataformat.JaxbDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "json": {
                    org.apache.camel.model.dataformat.JsonDataFormat val = asType(node, org.apache.camel.model.dataformat.JsonDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "json-api": {
                    org.apache.camel.model.dataformat.JsonApiDataFormat val = asType(node, org.apache.camel.model.dataformat.JsonApiDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "lzf": {
                    org.apache.camel.model.dataformat.LZFDataFormat val = asType(node, org.apache.camel.model.dataformat.LZFDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "mime-multipart": {
                    org.apache.camel.model.dataformat.MimeMultipartDataFormat val = asType(node, org.apache.camel.model.dataformat.MimeMultipartDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "protobuf": {
                    org.apache.camel.model.dataformat.ProtobufDataFormat val = asType(node, org.apache.camel.model.dataformat.ProtobufDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "rss": {
                    org.apache.camel.model.dataformat.RssDataFormat val = asType(node, org.apache.camel.model.dataformat.RssDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "soap": {
                    org.apache.camel.model.dataformat.SoapDataFormat val = asType(node, org.apache.camel.model.dataformat.SoapDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "swift-mt": {
                    org.apache.camel.model.dataformat.SwiftMtDataFormat val = asType(node, org.apache.camel.model.dataformat.SwiftMtDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "swift-mx": {
                    org.apache.camel.model.dataformat.SwiftMxDataFormat val = asType(node, org.apache.camel.model.dataformat.SwiftMxDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "syslog": {
                    org.apache.camel.model.dataformat.SyslogDataFormat val = asType(node, org.apache.camel.model.dataformat.SyslogDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "tar-file": {
                    org.apache.camel.model.dataformat.TarFileDataFormat val = asType(node, org.apache.camel.model.dataformat.TarFileDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "thrift": {
                    org.apache.camel.model.dataformat.ThriftDataFormat val = asType(node, org.apache.camel.model.dataformat.ThriftDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "tidy-markup": {
                    org.apache.camel.model.dataformat.TidyMarkupDataFormat val = asType(node, org.apache.camel.model.dataformat.TidyMarkupDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "univocity-csv": {
                    org.apache.camel.model.dataformat.UniVocityCsvDataFormat val = asType(node, org.apache.camel.model.dataformat.UniVocityCsvDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "univocity-fixed": {
                    org.apache.camel.model.dataformat.UniVocityFixedDataFormat val = asType(node, org.apache.camel.model.dataformat.UniVocityFixedDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "univocity-tsv": {
                    org.apache.camel.model.dataformat.UniVocityTsvDataFormat val = asType(node, org.apache.camel.model.dataformat.UniVocityTsvDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "xml-security": {
                    org.apache.camel.model.dataformat.XMLSecurityDataFormat val = asType(node, org.apache.camel.model.dataformat.XMLSecurityDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "xstream": {
                    org.apache.camel.model.dataformat.XStreamDataFormat val = asType(node, org.apache.camel.model.dataformat.XStreamDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "pgp": {
                    org.apache.camel.model.dataformat.PGPDataFormat val = asType(node, org.apache.camel.model.dataformat.PGPDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "yaml": {
                    org.apache.camel.model.dataformat.YAMLDataFormat val = asType(node, org.apache.camel.model.dataformat.YAMLDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "zip-deflater": {
                    org.apache.camel.model.dataformat.ZipDeflaterDataFormat val = asType(node, org.apache.camel.model.dataformat.ZipDeflaterDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "zip-file": {
                    org.apache.camel.model.dataformat.ZipFileDataFormat val = asType(node, org.apache.camel.model.dataformat.ZipFileDataFormat.class);
                    target.setDataFormatType(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "validate",
            types = org.apache.camel.model.ValidateDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "predicate-exception-factory", type = "string")
            }
    )
    public static class ValidateDefinitionDeserializer extends YamlDeserializerBase {
        public ValidateDefinitionDeserializer() {
            super(ValidateDefinition.class);
        }

        @Override
        protected ValidateDefinition newInstance() {
            return new ValidateDefinition();
        }

        @Override
        protected boolean setProperty(ValidateDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "predicate-exception-factory": {
                    String val = asText(node);
                    target.setPredicateExceptionFactory(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "validators",
            types = org.apache.camel.model.validator.ValidatorsDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "custom-validator", type = "object:org.apache.camel.model.validator.CustomValidatorDefinition"),
                    @YamlProperty(name = "endpoint-validator", type = "object:org.apache.camel.model.validator.EndpointValidatorDefinition"),
                    @YamlProperty(name = "predicate-validator", type = "object:org.apache.camel.model.validator.PredicateValidatorDefinition")
            }
    )
    public static class ValidatorsDefinitionDeserializer extends YamlDeserializerBase {
        public ValidatorsDefinitionDeserializer() {
            super(ValidatorsDefinition.class);
        }

        @Override
        protected ValidatorsDefinition newInstance() {
            return new ValidatorsDefinition();
        }

        @Override
        protected boolean setProperty(ValidatorsDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "validators": {
                    MappingNode val = asMappingNode(node);
                    setProperties(target, val);
                    break;
                }
                case "endpoint-validator": {
                    org.apache.camel.model.validator.EndpointValidatorDefinition val = asType(node, org.apache.camel.model.validator.EndpointValidatorDefinition.class);
                    java.util.List existing = target.getValidators();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setValidators(existing);
                    break;
                }
                case "predicate-validator": {
                    org.apache.camel.model.validator.PredicateValidatorDefinition val = asType(node, org.apache.camel.model.validator.PredicateValidatorDefinition.class);
                    java.util.List existing = target.getValidators();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setValidators(existing);
                    break;
                }
                case "custom-validator": {
                    org.apache.camel.model.validator.CustomValidatorDefinition val = asType(node, org.apache.camel.model.validator.CustomValidatorDefinition.class);
                    java.util.List existing = target.getValidators();
                    if (existing == null) {
                        existing = new java.util.ArrayList<>();
                    }
                    existing.add(val);
                    target.setValidators(existing);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "value",
            inline = true,
            types = org.apache.camel.model.ValueDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = @YamlProperty(name = "value", type = "string")
    )
    public static class ValueDefinitionDeserializer extends YamlDeserializerBase {
        public ValueDefinitionDeserializer() {
            super(ValueDefinition.class);
        }

        @Override
        protected ValueDefinition newInstance() {
            return new ValueDefinition();
        }

        @Override
        protected ValueDefinition newInstance(String value) {
            return new ValueDefinition(value);
        }

        @Override
        protected boolean setProperty(ValueDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "value": {
                    String val = asText(node);
                    target.setValue(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "weighted",
            types = org.apache.camel.model.loadbalancer.WeightedLoadBalancerDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "distribution-ratio", type = "string", required = true),
                    @YamlProperty(name = "distribution-ratio-delimiter", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "round-robin", type = "boolean")
            }
    )
    public static class WeightedLoadBalancerDefinitionDeserializer extends YamlDeserializerBase {
        public WeightedLoadBalancerDefinitionDeserializer() {
            super(WeightedLoadBalancerDefinition.class);
        }

        @Override
        protected WeightedLoadBalancerDefinition newInstance() {
            return new WeightedLoadBalancerDefinition();
        }

        @Override
        protected boolean setProperty(WeightedLoadBalancerDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "distribution-ratio": {
                    String val = asText(node);
                    target.setDistributionRatio(val);
                    break;
                }
                case "distribution-ratio-delimiter": {
                    String val = asText(node);
                    target.setDistributionRatioDelimiter(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "round-robin": {
                    String val = asText(node);
                    target.setRoundRobin(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "when",
            types = org.apache.camel.model.WhenDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class WhenDefinitionDeserializer extends YamlDeserializerBase {
        public WhenDefinitionDeserializer() {
            super(WhenDefinition.class);
        }

        @Override
        protected WhenDefinition newInstance() {
            return new WhenDefinition();
        }

        @Override
        protected boolean setProperty(WhenDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "when-skip-send-to-endpoint",
                    "whenSkipSendToEndpoint"
            },
            types = org.apache.camel.model.WhenSkipSendToEndpointDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "__extends", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "expression", type = "object:org.apache.camel.model.language.ExpressionDefinition"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "steps", type = "array:org.apache.camel.model.ProcessorDefinition")
            }
    )
    public static class WhenSkipSendToEndpointDefinitionDeserializer extends YamlDeserializerBase {
        public WhenSkipSendToEndpointDefinitionDeserializer() {
            super(WhenSkipSendToEndpointDefinition.class);
        }

        @Override
        protected WhenSkipSendToEndpointDefinition newInstance() {
            return new WhenSkipSendToEndpointDefinition();
        }

        @Override
        protected boolean setProperty(WhenSkipSendToEndpointDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "expression": {
                    org.apache.camel.model.language.ExpressionDefinition val = asType(node, org.apache.camel.model.language.ExpressionDefinition.class);
                    target.setExpression(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                case "steps": {
                    setSteps(target, node);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "wire-tap",
                    "wireTap"
            },
            types = org.apache.camel.model.WireTapDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-optimised-components", type = "boolean"),
                    @YamlProperty(name = "auto-start-components", type = "boolean"),
                    @YamlProperty(name = "cache-size", type = "number"),
                    @YamlProperty(name = "copy", type = "boolean"),
                    @YamlProperty(name = "description", type = "string"),
                    @YamlProperty(name = "disabled", type = "boolean"),
                    @YamlProperty(name = "dynamic-uri", type = "boolean"),
                    @YamlProperty(name = "executor-service", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "ignore-invalid-endpoint", type = "boolean"),
                    @YamlProperty(name = "inherit-error-handler", type = "boolean"),
                    @YamlProperty(name = "on-prepare", type = "string"),
                    @YamlProperty(name = "parameters", type = "object"),
                    @YamlProperty(name = "pattern", type = "enum:InOnly,InOut,InOptionalOut"),
                    @YamlProperty(name = "uri", type = "string", required = true)
            }
    )
    public static class WireTapDefinitionDeserializer extends YamlDeserializerEndpointAwareBase {
        public WireTapDefinitionDeserializer() {
            super(WireTapDefinition.class);
        }

        @Override
        protected WireTapDefinition newInstance() {
            return new WireTapDefinition();
        }

        @Override
        protected void setEndpointUri(CamelContext camelContext, Node node,
                WireTapDefinition target, Map parameters) {
            target.setUri(org.apache.camel.dsl.yaml.common.YamlSupport.createEndpointUri(camelContext, node, target.getUri(), parameters));
        }

        @Override
        protected boolean setProperty(WireTapDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-optimised-components": {
                    String val = asText(node);
                    target.setAllowOptimisedComponents(val);
                    break;
                }
                case "auto-start-components": {
                    String val = asText(node);
                    target.setAutoStartComponents(val);
                    break;
                }
                case "cache-size": {
                    String val = asText(node);
                    target.setCacheSize(val);
                    break;
                }
                case "copy": {
                    String val = asText(node);
                    target.setCopy(val);
                    break;
                }
                case "disabled": {
                    String val = asText(node);
                    target.setDisabled(val);
                    break;
                }
                case "dynamic-uri": {
                    String val = asText(node);
                    target.setDynamicUri(val);
                    break;
                }
                case "executor-service": {
                    String val = asText(node);
                    target.setExecutorService(val);
                    break;
                }
                case "ignore-invalid-endpoint": {
                    String val = asText(node);
                    target.setIgnoreInvalidEndpoint(val);
                    break;
                }
                case "inherit-error-handler": {
                    String val = asText(node);
                    target.setInheritErrorHandler(java.lang.Boolean.valueOf(val));
                    break;
                }
                case "on-prepare": {
                    String val = asText(node);
                    target.setOnPrepare(val);
                    break;
                }
                case "pattern": {
                    String val = asText(node);
                    target.setPattern(val);
                    break;
                }
                case "uri": {
                    String val = asText(node);
                    target.setUri(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "description": {
                    org.apache.camel.model.DescriptionDefinition val = asType(node, org.apache.camel.model.DescriptionDefinition.class);
                    target.setDescription(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "xml-security",
                    "xmlSecurity"
            },
            types = org.apache.camel.model.dataformat.XMLSecurityDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "add-key-value-for-encrypted-key", type = "boolean"),
                    @YamlProperty(name = "digest-algorithm", type = "enum:SHA1,SHA256,SHA512"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "key-cipher-algorithm", type = "enum:RSA_v1dot5,RSA_OAEP,RSA_OAEP_11"),
                    @YamlProperty(name = "key-or-trust-store-parameters-ref", type = "string"),
                    @YamlProperty(name = "key-password", type = "string"),
                    @YamlProperty(name = "mgf-algorithm", type = "enum:MGF1_SHA1,MGF1_SHA256,MGF1_SHA512"),
                    @YamlProperty(name = "pass-phrase", type = "string"),
                    @YamlProperty(name = "pass-phrase-byte", type = "string", format = "binary"),
                    @YamlProperty(name = "recipient-key-alias", type = "string"),
                    @YamlProperty(name = "secure-tag", type = "string"),
                    @YamlProperty(name = "secure-tag-contents", type = "boolean"),
                    @YamlProperty(name = "xml-cipher-algorithm", type = "enum:TRIPLEDES,AES_128,AES_128_GCM,AES_192,AES_192_GCM,AES_256,AES_256_GCM,SEED_128,CAMELLIA_128,CAMELLIA_192,CAMELLIA_256")
            }
    )
    public static class XMLSecurityDataFormatDeserializer extends YamlDeserializerBase {
        public XMLSecurityDataFormatDeserializer() {
            super(XMLSecurityDataFormat.class);
        }

        @Override
        protected XMLSecurityDataFormat newInstance() {
            return new XMLSecurityDataFormat();
        }

        @Override
        protected boolean setProperty(XMLSecurityDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "add-key-value-for-encrypted-key": {
                    String val = asText(node);
                    target.setAddKeyValueForEncryptedKey(val);
                    break;
                }
                case "digest-algorithm": {
                    String val = asText(node);
                    target.setDigestAlgorithm(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "key-cipher-algorithm": {
                    String val = asText(node);
                    target.setKeyCipherAlgorithm(val);
                    break;
                }
                case "key-or-trust-store-parameters-ref": {
                    String val = asText(node);
                    target.setKeyOrTrustStoreParametersRef(val);
                    break;
                }
                case "key-password": {
                    String val = asText(node);
                    target.setKeyPassword(val);
                    break;
                }
                case "mgf-algorithm": {
                    String val = asText(node);
                    target.setMgfAlgorithm(val);
                    break;
                }
                case "pass-phrase": {
                    String val = asText(node);
                    target.setPassPhrase(val);
                    break;
                }
                case "pass-phrase-byte": {
                    byte[] val = asByteArray(node);
                    target.setPassPhraseByte(val);
                    break;
                }
                case "recipient-key-alias": {
                    String val = asText(node);
                    target.setRecipientKeyAlias(val);
                    break;
                }
                case "secure-tag": {
                    String val = asText(node);
                    target.setSecureTag(val);
                    break;
                }
                case "secure-tag-contents": {
                    String val = asText(node);
                    target.setSecureTagContents(val);
                    break;
                }
                case "xml-cipher-algorithm": {
                    String val = asText(node);
                    target.setXmlCipherAlgorithm(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "xtokenize",
            inline = true,
            types = org.apache.camel.model.language.XMLTokenizerExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "group", type = "number"),
                    @YamlProperty(name = "header-name", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "mode", type = "enum:i,w,u,t"),
                    @YamlProperty(name = "namespace", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "property-name", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class XMLTokenizerExpressionDeserializer extends YamlDeserializerBase {
        public XMLTokenizerExpressionDeserializer() {
            super(XMLTokenizerExpression.class);
        }

        @Override
        protected XMLTokenizerExpression newInstance() {
            return new XMLTokenizerExpression();
        }

        @Override
        protected XMLTokenizerExpression newInstance(String value) {
            return new XMLTokenizerExpression(value);
        }

        @Override
        protected boolean setProperty(XMLTokenizerExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "group": {
                    String val = asText(node);
                    target.setGroup(val);
                    break;
                }
                case "header-name": {
                    String val = asText(node);
                    target.setHeaderName(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "mode": {
                    String val = asText(node);
                    target.setMode(val);
                    break;
                }
                case "namespace": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setNamespace(val);
                    break;
                }
                case "property-name": {
                    String val = asText(node);
                    target.setPropertyName(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "xpath",
            inline = true,
            types = org.apache.camel.model.language.XPathExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "document-type", type = "string"),
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "factory-ref", type = "string"),
                    @YamlProperty(name = "header-name", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "log-namespaces", type = "boolean"),
                    @YamlProperty(name = "namespace", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "object-model", type = "string"),
                    @YamlProperty(name = "pre-compile", type = "boolean"),
                    @YamlProperty(name = "property-name", type = "string"),
                    @YamlProperty(name = "result-type", type = "enum:NUMBER,STRING,BOOLEAN,NODESET,NODE"),
                    @YamlProperty(name = "saxon", type = "boolean"),
                    @YamlProperty(name = "thread-safety", type = "boolean"),
                    @YamlProperty(name = "trim", type = "boolean")
            }
    )
    public static class XPathExpressionDeserializer extends YamlDeserializerBase {
        public XPathExpressionDeserializer() {
            super(XPathExpression.class);
        }

        @Override
        protected XPathExpression newInstance() {
            return new XPathExpression();
        }

        @Override
        protected XPathExpression newInstance(String value) {
            return new XPathExpression(value);
        }

        @Override
        protected boolean setProperty(XPathExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "document-type": {
                    String val = asText(node);
                    target.setDocumentTypeName(val);
                    break;
                }
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "factory-ref": {
                    String val = asText(node);
                    target.setFactoryRef(val);
                    break;
                }
                case "header-name": {
                    String val = asText(node);
                    target.setHeaderName(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "log-namespaces": {
                    String val = asText(node);
                    target.setLogNamespaces(val);
                    break;
                }
                case "namespace": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setNamespace(val);
                    break;
                }
                case "object-model": {
                    String val = asText(node);
                    target.setObjectModel(val);
                    break;
                }
                case "pre-compile": {
                    String val = asText(node);
                    target.setPreCompile(val);
                    break;
                }
                case "property-name": {
                    String val = asText(node);
                    target.setPropertyName(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "saxon": {
                    String val = asText(node);
                    target.setSaxon(val);
                    break;
                }
                case "thread-safety": {
                    String val = asText(node);
                    target.setThreadSafety(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "xquery",
            inline = true,
            types = org.apache.camel.model.language.XQueryExpression.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "configuration-ref", type = "string"),
                    @YamlProperty(name = "expression", type = "string", required = true),
                    @YamlProperty(name = "header-name", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "namespace", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "property-name", type = "string"),
                    @YamlProperty(name = "result-type", type = "string"),
                    @YamlProperty(name = "trim", type = "boolean"),
                    @YamlProperty(name = "type", type = "string")
            }
    )
    public static class XQueryExpressionDeserializer extends YamlDeserializerBase {
        public XQueryExpressionDeserializer() {
            super(XQueryExpression.class);
        }

        @Override
        protected XQueryExpression newInstance() {
            return new XQueryExpression();
        }

        @Override
        protected XQueryExpression newInstance(String value) {
            return new XQueryExpression(value);
        }

        @Override
        protected boolean setProperty(XQueryExpression target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "configuration-ref": {
                    String val = asText(node);
                    target.setConfigurationRef(val);
                    break;
                }
                case "expression": {
                    String val = asText(node);
                    target.setExpression(val);
                    break;
                }
                case "header-name": {
                    String val = asText(node);
                    target.setHeaderName(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "namespace": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setNamespace(val);
                    break;
                }
                case "property-name": {
                    String val = asText(node);
                    target.setPropertyName(val);
                    break;
                }
                case "result-type": {
                    String val = asText(node);
                    target.setResultTypeName(val);
                    break;
                }
                case "trim": {
                    String val = asText(node);
                    target.setTrim(val);
                    break;
                }
                case "type": {
                    String val = asText(node);
                    target.setType(val);
                    break;
                }
                default: {
                    ExpressionDefinition ed = target.getExpressionType();
                    if (ed != null) {
                        throw new org.apache.camel.dsl.yaml.common.exception.DuplicateFieldException(node, propertyName, "as an expression");
                    }
                    ed = ExpressionDeserializers.constructExpressionType(propertyKey, node);
                    if (ed != null) {
                        target.setExpressionType(ed);
                    } else {
                        return false;
                    }
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "xstream",
            inline = true,
            types = org.apache.camel.model.dataformat.XStreamDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "aliases", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "content-type-header", type = "boolean"),
                    @YamlProperty(name = "converters", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "driver", type = "string"),
                    @YamlProperty(name = "driver-ref", type = "string"),
                    @YamlProperty(name = "encoding", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "implicit-collections", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "mode", type = "enum:NO_REFERENCES,ID_REFERENCES,XPATH_RELATIVE_REFERENCES,XPATH_ABSOLUTE_REFERENCES,SINGLE_NODE_XPATH_RELATIVE_REFERENCES,SINGLE_NODE_XPATH_ABSOLUTE_REFERENCES"),
                    @YamlProperty(name = "omit-fields", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "permissions", type = "string")
            }
    )
    public static class XStreamDataFormatDeserializer extends YamlDeserializerBase {
        public XStreamDataFormatDeserializer() {
            super(XStreamDataFormat.class);
        }

        @Override
        protected XStreamDataFormat newInstance() {
            return new XStreamDataFormat();
        }

        @Override
        protected XStreamDataFormat newInstance(String value) {
            return new XStreamDataFormat(value);
        }

        @Override
        protected boolean setProperty(XStreamDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "aliases": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setAliases(val);
                    break;
                }
                case "content-type-header": {
                    String val = asText(node);
                    target.setContentTypeHeader(val);
                    break;
                }
                case "converters": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setConverters(val);
                    break;
                }
                case "driver": {
                    String val = asText(node);
                    target.setDriver(val);
                    break;
                }
                case "driver-ref": {
                    String val = asText(node);
                    target.setDriverRef(val);
                    break;
                }
                case "encoding": {
                    String val = asText(node);
                    target.setEncoding(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "implicit-collections": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setImplicitCollections(val);
                    break;
                }
                case "mode": {
                    String val = asText(node);
                    target.setMode(val);
                    break;
                }
                case "omit-fields": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setOmitFields(val);
                    break;
                }
                case "permissions": {
                    String val = asText(node);
                    target.setPermissions(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = "yaml",
            types = org.apache.camel.model.dataformat.YAMLDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-any-type", type = "boolean"),
                    @YamlProperty(name = "allow-recursive-keys", type = "boolean"),
                    @YamlProperty(name = "constructor", type = "string"),
                    @YamlProperty(name = "dumper-options", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "library", type = "enum:SnakeYAML"),
                    @YamlProperty(name = "max-aliases-for-collections", type = "number"),
                    @YamlProperty(name = "pretty-flow", type = "boolean"),
                    @YamlProperty(name = "representer", type = "string"),
                    @YamlProperty(name = "resolver", type = "string"),
                    @YamlProperty(name = "type-filter", type = "array:org.apache.camel.model.dataformat.YAMLTypeFilterDefinition"),
                    @YamlProperty(name = "unmarshal-type", type = "string"),
                    @YamlProperty(name = "use-application-context-class-loader", type = "boolean")
            }
    )
    public static class YAMLDataFormatDeserializer extends YamlDeserializerBase {
        public YAMLDataFormatDeserializer() {
            super(YAMLDataFormat.class);
        }

        @Override
        protected YAMLDataFormat newInstance() {
            return new YAMLDataFormat();
        }

        @Override
        protected boolean setProperty(YAMLDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-any-type": {
                    String val = asText(node);
                    target.setAllowAnyType(val);
                    break;
                }
                case "allow-recursive-keys": {
                    String val = asText(node);
                    target.setAllowRecursiveKeys(val);
                    break;
                }
                case "constructor": {
                    String val = asText(node);
                    target.setConstructor(val);
                    break;
                }
                case "dumper-options": {
                    String val = asText(node);
                    target.setDumperOptions(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "library": {
                    target.setLibrary(asEnum(node, org.apache.camel.model.dataformat.YAMLLibrary.class));
                    break;
                }
                case "max-aliases-for-collections": {
                    String val = asText(node);
                    target.setMaxAliasesForCollections(val);
                    break;
                }
                case "pretty-flow": {
                    String val = asText(node);
                    target.setPrettyFlow(val);
                    break;
                }
                case "representer": {
                    String val = asText(node);
                    target.setRepresenter(val);
                    break;
                }
                case "resolver": {
                    String val = asText(node);
                    target.setResolver(val);
                    break;
                }
                case "type-filter": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.dataformat.YAMLTypeFilterDefinition.class);
                    target.setTypeFilters(val);
                    break;
                }
                case "unmarshal-type": {
                    String val = asText(node);
                    target.setUnmarshalTypeName(val);
                    break;
                }
                case "use-application-context-class-loader": {
                    String val = asText(node);
                    target.setUseApplicationContextClassLoader(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "type-filter",
                    "typeFilter"
            },
            types = org.apache.camel.model.dataformat.YAMLTypeFilterDefinition.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "type", type = "string"),
                    @YamlProperty(name = "value", type = "string")
            }
    )
    public static class YAMLTypeFilterDefinitionDeserializer extends YamlDeserializerBase {
        public YAMLTypeFilterDefinitionDeserializer() {
            super(YAMLTypeFilterDefinition.class);
        }

        @Override
        protected YAMLTypeFilterDefinition newInstance() {
            return new YAMLTypeFilterDefinition();
        }

        @Override
        protected boolean setProperty(YAMLTypeFilterDefinition target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "type": {
                    String val = asText(node);
                    target.setType(val);
                    break;
                }
                case "value": {
                    String val = asText(node);
                    target.setValue(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "zip-deflater",
                    "zipDeflater"
            },
            types = org.apache.camel.model.dataformat.ZipDeflaterDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "compression-level", type = "enum:-1,0,1,2,3,4,5,6,7,8,9"),
                    @YamlProperty(name = "id", type = "string")
            }
    )
    public static class ZipDeflaterDataFormatDeserializer extends YamlDeserializerBase {
        public ZipDeflaterDataFormatDeserializer() {
            super(ZipDeflaterDataFormat.class);
        }

        @Override
        protected ZipDeflaterDataFormat newInstance() {
            return new ZipDeflaterDataFormat();
        }

        @Override
        protected boolean setProperty(ZipDeflaterDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "compression-level": {
                    String val = asText(node);
                    target.setCompressionLevel(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "zip-file",
                    "zipFile"
            },
            types = org.apache.camel.model.dataformat.ZipFileDataFormat.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "allow-empty-directory", type = "boolean"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "max-decompressed-size", type = "number"),
                    @YamlProperty(name = "preserve-path-elements", type = "boolean"),
                    @YamlProperty(name = "using-iterator", type = "boolean")
            }
    )
    public static class ZipFileDataFormatDeserializer extends YamlDeserializerBase {
        public ZipFileDataFormatDeserializer() {
            super(ZipFileDataFormat.class);
        }

        @Override
        protected ZipFileDataFormat newInstance() {
            return new ZipFileDataFormat();
        }

        @Override
        protected boolean setProperty(ZipFileDataFormat target, String propertyKey,
                String propertyName, Node node) {
            switch(propertyKey) {
                case "allow-empty-directory": {
                    String val = asText(node);
                    target.setAllowEmptyDirectory(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "max-decompressed-size": {
                    String val = asText(node);
                    target.setMaxDecompressedSize(val);
                    break;
                }
                case "preserve-path-elements": {
                    String val = asText(node);
                    target.setPreservePathElements(val);
                    break;
                }
                case "using-iterator": {
                    String val = asText(node);
                    target.setUsingIterator(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }

    @YamlType(
            nodes = {
                    "zookeeper-service-discovery",
                    "zookeeperServiceDiscovery"
            },
            types = org.apache.camel.model.cloud.ZooKeeperServiceCallServiceDiscoveryConfiguration.class,
            order = org.apache.camel.dsl.yaml.common.YamlDeserializerResolver.ORDER_LOWEST - 1,
            properties = {
                    @YamlProperty(name = "base-path", type = "string", required = true),
                    @YamlProperty(name = "connection-timeout", type = "string"),
                    @YamlProperty(name = "id", type = "string"),
                    @YamlProperty(name = "namespace", type = "string"),
                    @YamlProperty(name = "nodes", type = "string", required = true),
                    @YamlProperty(name = "properties", type = "array:org.apache.camel.model.PropertyDefinition"),
                    @YamlProperty(name = "reconnect-base-sleep-time", type = "string"),
                    @YamlProperty(name = "reconnect-max-retries", type = "string"),
                    @YamlProperty(name = "reconnect-max-sleep-time", type = "string"),
                    @YamlProperty(name = "session-timeout", type = "string")
            }
    )
    public static class ZooKeeperServiceCallServiceDiscoveryConfigurationDeserializer extends YamlDeserializerBase {
        public ZooKeeperServiceCallServiceDiscoveryConfigurationDeserializer() {
            super(ZooKeeperServiceCallServiceDiscoveryConfiguration.class);
        }

        @Override
        protected ZooKeeperServiceCallServiceDiscoveryConfiguration newInstance() {
            return new ZooKeeperServiceCallServiceDiscoveryConfiguration();
        }

        @Override
        protected boolean setProperty(ZooKeeperServiceCallServiceDiscoveryConfiguration target,
                String propertyKey, String propertyName, Node node) {
            switch(propertyKey) {
                case "base-path": {
                    String val = asText(node);
                    target.setBasePath(val);
                    break;
                }
                case "connection-timeout": {
                    String val = asText(node);
                    target.setConnectionTimeout(val);
                    break;
                }
                case "id": {
                    String val = asText(node);
                    target.setId(val);
                    break;
                }
                case "namespace": {
                    String val = asText(node);
                    target.setNamespace(val);
                    break;
                }
                case "nodes": {
                    String val = asText(node);
                    target.setNodes(val);
                    break;
                }
                case "properties": {
                    java.util.List val = asFlatList(node, org.apache.camel.model.PropertyDefinition.class);
                    target.setProperties(val);
                    break;
                }
                case "reconnect-base-sleep-time": {
                    String val = asText(node);
                    target.setReconnectBaseSleepTime(val);
                    break;
                }
                case "reconnect-max-retries": {
                    String val = asText(node);
                    target.setReconnectMaxRetries(val);
                    break;
                }
                case "reconnect-max-sleep-time": {
                    String val = asText(node);
                    target.setReconnectMaxSleepTime(val);
                    break;
                }
                case "session-timeout": {
                    String val = asText(node);
                    target.setSessionTimeout(val);
                    break;
                }
                default: {
                    return false;
                }
            }
            return true;
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy