<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
  xmlns:tns="http://www.jooq.org/xsd/jooq-codegen-3.21.1.xsd"
  xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
  xmlns:annox="http://annox.dev.java.net"
  targetNamespace="http://www.jooq.org/xsd/jooq-codegen-3.21.1.xsd"
  elementFormDefault="qualified"
  jxb:extensionBindingPrefixes="annox"
  jxb:version="2.1">

  <element name="configuration">
    <complexType>
      <all>
        <element name="logging" type="tns:Logging" minOccurs="0" maxOccurs="1">
          <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The logging configuration element specifies the code generation logging threshold.]]></jxb:javadoc></jxb:property></appinfo></annotation>
        </element>

        <element name="onError" type="tns:OnError" minOccurs="0" maxOccurs="1" default="FAIL">
          <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[
The action to be taken by the generator as the consequence of an encountered exception 
outside of jOOQ's control, such as a {@link java.sql.SQLException} or a 
{@link java.io.IOException}. 

Defaults to FAIL.]]></jxb:javadoc></jxb:property></appinfo></annotation>
        </element>

        <element name="onUnused" type="tns:OnError" minOccurs="0" maxOccurs="1" default="LOG">
          <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[
The action to be taken by the generator as the consequence of unused objects being encountered.

Defaults to LOG.]]></jxb:javadoc></jxb:property></appinfo></annotation>
        </element>

        <element name="onDeprecated" type="tns:OnError" minOccurs="0" maxOccurs="1" default="LOG">
          <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[
The action to be taken by the generator as the consequence of deprecated configuration being used.

Defaults to LOG.]]></jxb:javadoc></jxb:property></appinfo></annotation>
        </element>

        <element name="onExperimental" type="tns:OnError" minOccurs="0" maxOccurs="1" default="FAIL">
          <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[
The action to be taken by the generator as the consequence of experimental configuration being used.

Defaults to FAIL.]]></jxb:javadoc></jxb:property></appinfo></annotation>
        </element>

        <element name="onMisconfiguration" type="tns:OnError" minOccurs="0" maxOccurs="1" default="FAIL">
          <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[
The action to be taken by the generator as the consequence of inconsistent or 
illegal configuration being used.

Defaults to FAIL.]]></jxb:javadoc></jxb:property></appinfo></annotation>
        </element>

        <element name="onMetadataProblem" type="tns:OnError" minOccurs="0" maxOccurs="1" default="LOG">
          <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[
The action to be taken by the generator as the consequence of database meta data causing
code generation problems, such as ambiguities in generated file names or object names.

Defaults to LOG.]]></jxb:javadoc></jxb:property></appinfo></annotation>
        </element>

        <element name="onPerformanceProblem" type="tns:OnError" minOccurs="0" maxOccurs="1" default="LOG">
          <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[
The action to be taken by the generator as the consequence of database meta data querying 
being slow.

Defaults to LOG.]]></jxb:javadoc></jxb:property></appinfo></annotation>
        </element>

        <element name="jdbc" type="tns:Jdbc" minOccurs="0"  maxOccurs="1">
          <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The JDBC configuration element contains information about how to set up the database connection used for source code generation.]]></jxb:javadoc></jxb:property></appinfo></annotation>
        </element>

        <element name="generator" type="tns:Generator" minOccurs="1" maxOccurs="1">
          <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The GENERATOR configuration element contains information about source code generation itself.]]></jxb:javadoc></jxb:property></appinfo></annotation>
        </element>
         
        <element name="basedir" type="string" minOccurs="0" maxOccurs="1">
          <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The base directory that should be used instead of the JVM's working directory, to resolve all relative paths.]]></jxb:javadoc></jxb:property></appinfo></annotation>
        </element>
      </all>
    </complexType>
  </element>

  <simpleType name="Logging">
    <restriction base="string">
      <enumeration value="TRACE">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The <code>TRACE</code> log level.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="DEBUG">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The <code>DEBUG</code> log level.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="INFO">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The <code>INFO</code> log level.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="WARN">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The <code>WARN</code> log level.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="ERROR">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The <code>ERROR</code> log level.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="FATAL">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The <code>FATAL</code> log level.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
    </restriction>
  </simpleType>

  <simpleType name="OnError">
    <restriction base="string">
      <enumeration value="FAIL">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[On error, the code generation should fail.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="LOG">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[On error, the code generation should log the error, and continue.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="SILENT">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Suppress all errors.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
    </restriction>
  </simpleType>

  <complexType name="Jdbc">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[JDBC connection configuration.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="driver" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The JDBC driver class.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="url" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The JDBC connection URL.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="urlProperty" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The system property name that describes the JDBC connection URL.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="schema" type="string" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use database schema configuration elements instead.]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>

      <element name="user" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The JDBC connection user. Be sure this user has all required GRANTs to the dictionary views/tables to generate the desired artefacts.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="username" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Just a synonym for "user" to be compatible with other Maven plugins.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="password" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The JDBC connection password.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="autoCommit" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The value of the JDBC autocommit flag. The flag is not set by default, i.e. it keeps the default provided to jOOQ.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="properties" type="tns:Properties" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Enlist custom JDBC driver properties that are provided to the java.sql.DriverManager when fetching a connection.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="securityProvider" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link java.security.Provider} that should be loaded using {@link java.security.Security} prior to connecting to the JDBC driver.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="initScript" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A script to run after creating the JDBC connection, and before running the code generator.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="initSeparator" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The separator used to separate statements in the initScript, defaulting to ";".]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="Properties">
    <sequence>
      <element name="property" type="tns:Property" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="Property">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Custom properties that are useful for Database implementations like
<code>JPADatabase</code>, <code>XMLDatabase</code>, or <code>DDLDatabase</code>, or to pass to JDBC drivers.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="key" type="string" minOccurs="1" maxOccurs="1"/>
      <element name="value" type="string" minOccurs="1" maxOccurs="1"/>
    </all>
  </complexType>

  <complexType name="Generator">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Configuration that affects the way code is being generated.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="name" type="string" default="org.jooq.codegen.DefaultGenerator" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The class used to generate source code. This can be overridden with a custom code generator implementation.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="java" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A self-contained, inline implementation of {@link org.jooq.codegen.Generator} that will be compiled and class-loaded on the fly by the code generator.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <!-- The naming strategy used for class and field names -->
      <element name="strategy" type="tns:Strategy" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Definitions of custom naming strategies (declarative or programmatic) to define how generated Java objects should be named.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="database" type="tns:Database" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Configuration of the database meta data source.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="generate" type="tns:Generate" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Options strictly related to generated code.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="target" type="tns:Target" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Options to define where the generated code should be located.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="Strategy">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Definitions of custom naming strategies (declarative or programmatic) to define how generated Java objects should be named.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="name" type="string" minOccurs="0" maxOccurs="1" default="org.jooq.codegen.DefaultGeneratorStrategy">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The class used to provide a naming strategy for generated source code. You may override this with your custom naming strategy. This cannot be combined with a matcher configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="java" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A self-contained, inline implementation of {@link org.jooq.codegen.GeneratorStrategy} that will be compiled and class-loaded on the fly by the code generator.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="matchers" type="tns:Matchers" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The matcher strategy configuration used when applying an XML-based strategy. This cannot be combined with a named strategy configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="Matchers">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="catalogs" type="tns:MatchersCatalogsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for catalog names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="schemas" type="tns:MatchersSchemasType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for schema names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tables" type="tns:MatchersTablesType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for table names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="indexes" type="tns:MatchersIndexesType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for index names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="primaryKeys" type="tns:MatchersPrimaryKeysType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for primary key names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="uniqueKeys" type="tns:MatchersUniqueKeysType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for unique key names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="foreignKeys" type="tns:MatchersForeignKeysType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for foreign key names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fields" type="tns:MatchersFieldsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for field names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="routines" type="tns:MatchersRoutinesType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for routine names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="sequences" type="tns:MatchersSequencesType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for sequence names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="enums" type="tns:MatchersEnumsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for enum names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="embeddables" type="tns:MatchersEmbeddablesType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for embeddable names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="udts" type="tns:MatchersUDTsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for UDT names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="attributes" type="tns:MatchersAttributesType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Declarative naming strategy configuration for UDT attribute names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersCatalogsType">
    <sequence>
      <element name="catalog" type="tns:MatchersCatalogType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersCatalogType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for catalog names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This catalog matcher applies to all unqualified or qualified catalog names matched by this expression. If left empty, this matcher applies to all catalogs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="catalogClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Catalog} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="catalogIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Catalog} identifier.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="catalogExtends" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides a super class that a generated {@link org.jooq.Catalog} should extend.
<p>        
jOOQ internals make a few assumptions about what a {@link org.jooq.Catalog} does, so to minimise
unexpected behaviour, custom catalog super classes should extend {@link org.jooq.impl.CatalogImpl}
and follow its (undocumented!) assumptions (e.g. constructors, etc.). Use this at your own risk.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="catalogImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.Catalog} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersSchemasType">
    <sequence>
      <element name="schema" type="tns:MatchersSchemaType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersSchemaType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for schema names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This schema matcher applies to all unqualified or qualified schema names matched by this expression. If left empty, this matcher applies to all schemas.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="schemaClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Schema} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="schemaIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Schema} identifier.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="schemaExtends" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides a super class that a generated {@link org.jooq.Schema} should extend.
<p>        
jOOQ internals make a few assumptions about what a {@link org.jooq.Schema} does, so to minimise
unexpected behaviour, custom schema super classes should extend {@link org.jooq.impl.SchemaImpl}
and follow its (undocumented!) assumptions (e.g. constructors, etc.). Use this at your own risk.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="schemaImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.Schema} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersTablesType">
    <sequence>
      <element name="table" type="tns:MatchersTableType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersTableType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for table names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This table matcher applies to all unqualified or qualified table names matched by this expression. If left empty, this matcher applies to all tables.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tableClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Table} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tableIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Table} identifier.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tableExtends" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides a super class that a generated {@link org.jooq.Table} should extend.
<p>        
jOOQ internals make a few assumptions about what a {@link org.jooq.Table} does, so to minimise
unexpected behaviour, custom table super classes should extend {@link org.jooq.impl.TableImpl}
and follow its (undocumented!) assumptions (e.g. constructors, etc.). Use this at your own risk.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tableImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.Table} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pathClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Table} and {@link org.jooq.Path} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pathExtends" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides a super class that a generated {@link org.jooq.Table} and {@link org.jooq.Path} object should extend.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pathImplements" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.Table} and {@link org.jooq.Path} object should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.TableRecord} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordExtends" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides a super class that a generated {@link org.jooq.TableRecord} should extend.
<p>        
jOOQ internals make a few assumptions about what a {@link org.jooq.TableRecord} does, so to minimise
unexpected behaviour, custom table record super classes should extend {@link org.jooq.impl.TableRecordImpl}
and follow its (undocumented!) assumptions (e.g. constructors, etc.). Use this at your own risk.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.TableRecord} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="interfaceClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated interface implemented by the {@link org.jooq.TableRecord} and/or the POJO.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="interfaceImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated interface (which is implemented by the {@link org.jooq.TableRecord} and/or POJO) should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="daoClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.DAO} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="daoExtends" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides a super class that a generated {@link org.jooq.DAO} should extend.
<p>        
jOOQ internals make a few assumptions about what a {@link org.jooq.DAO} does, so to minimise
unexpected behaviour, custom DAO super classes should extend {@link org.jooq.impl.DAOImpl}
and follow its (undocumented!) assumptions (e.g. constructors, etc.). Use this at your own risk.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="daoImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.DAO} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojoClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated POJOs object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojoExtends" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides a super class that a generated POJO should extend.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojoImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated POJO should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersIndexesType">
    <sequence>
      <element name="index" type="tns:MatchersIndexType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersIndexType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for index names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This table matcher applies to all unqualified or qualified index names matched by this expression. If left empty, this matcher applies to all indexes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="keyIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated key literal in the Indexes class.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersPrimaryKeysType">
    <sequence>
      <element name="primaryKey" type="tns:MatchersPrimaryKeyType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersPrimaryKeyType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for primary key names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This table matcher applies to all unqualified or qualified primary key names matched by this expression. If left empty, this matcher applies to all primary keys.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="keyIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated key literal in the Keys class.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersUniqueKeysType">
    <sequence>
      <element name="uniqueKey" type="tns:MatchersUniqueKeyType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersUniqueKeyType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for foreign key names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This table matcher applies to all unqualified or qualified unique key names matched by this expression. If left empty, this matcher applies to all unique keys.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="keyIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated key literal in the Keys class.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersForeignKeysType">
    <sequence>
      <element name="foreignKey" type="tns:MatchersForeignKeyType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersForeignKeyType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for foreign key names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This table matcher applies to all unqualified or qualified foreign key names matched by this expression. If left empty, this matcher applies to all foreign keys.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="keyIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated key literal in the Keys class.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pathMethodName" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated to-one path join methods.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pathMethodNameInverse" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated to-many path join methods.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pathMethodNameManyToMany" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated many-to-many path join methods.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersFieldsType">
    <sequence>
      <element name="field" type="tns:MatchersFieldType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersFieldType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for field names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This field matcher applies to all unqualified or qualified field names matched by this expression. If left empty, this matcher applies to all fields.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fieldIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Field} identifier.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fieldMember" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of generated members (e.g. in POJOs) corresponding to this {@link org.jooq.Field}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fieldSetter" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of generated setters (e.g. in {@link org.jooq.TableRecord} and/or POJOs) corresponding to this {@link org.jooq.Field}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fieldGetter" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of generated getters (e.g. in {@link org.jooq.TableRecord} and/or POJOs) corresponding to this {@link org.jooq.Field}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>      
      
      <element name="daoMember" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of generated members and member suffixes in DAO methods corresponding to this {@link org.jooq.Field}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="tableMemberOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated table members (table fields) should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="recordSetterOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated record setters should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordGetterOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated record getters should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordMemberOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated record members (properties) should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="interfaceSetterOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated interface setters should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="interfaceGetterOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated interface getters should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="interfaceMemberOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated interface members (properties) should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="pojoSetterOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated POJO setters should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojoGetterOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated POJO getters should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojoMemberOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated POJO members (properties) should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersRoutinesType">
    <sequence>
      <element name="routine" type="tns:MatchersRoutineType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersRoutineType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for routine names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This routine matcher applies to all unqualified or qualified routine names matched by this expression. If left empty, this matcher applies to all routines.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="routineClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Routine} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="routineMethod" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of generated convenience methods used to call the {@link org.jooq.Routine}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="routineExtends" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides a super class that a generated {@link org.jooq.Routine} should extend.
<p>        
jOOQ internals make a few assumptions about what a {@link org.jooq.Routine} does, so to minimise
unexpected behaviour, custom routine super classes should extend {@link org.jooq.impl.AbstractRoutine}
and follow its (undocumented!) assumptions (e.g. constructors, etc.). Use this at your own risk.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="routineImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.Routine} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersSequencesType">
    <sequence>
      <element name="sequence" type="tns:MatchersSequenceType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersSequenceType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for sequence names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This sequence matcher applies to all unqualified or qualified sequence names matched by this expression. If left empty, this matcher applies to all sequences.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="sequenceIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.Sequence} identifier.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersEnumsType">
    <sequence>
      <element name="enum" type="tns:MatchersEnumType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersEnumType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for enum names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This enum matcher applies to all unqualified or qualified enum names matched by this expression. If left empty, this matcher applies to all enums.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="enumClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.EnumType} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="enumImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.EnumType} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="enumLiteral" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.EnumType} literal values.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersEmbeddablesType">
    <sequence>
      <element name="embeddable" type="tns:MatchersEmbeddableType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersEmbeddableType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for embeddable names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This table matcher applies to all unqualified or qualified embeddable names matched by this expression. If left empty, this matcher applies to all embeddables.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.EmbeddableRecord} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordExtends" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides a super class that a generated {@link org.jooq.EmbeddableRecord} should extend.
<p>        
jOOQ internals make a few assumptions about what a {@link org.jooq.EmbeddableRecord} does, so to minimise
unexpected behaviour, custom embeddable record super classes should extend {@link org.jooq.impl.EmbeddableRecordImpl}
and follow its (undocumented!) assumptions (e.g. constructors, etc.). Use this at your own risk.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.EmbeddableRecord} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="interfaceClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated interface implemented by the {@link org.jooq.EmbeddableRecord} and/or the POJO.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="interfaceImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated interface (which is implemented by the {@link org.jooq.EmbeddableRecord} and/or POJO) should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojoClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated POJOs object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojoExtends" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides a super class that a generated POJO should extend.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojoImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated POJO should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersUDTsType">
    <sequence>
      <element name="udt" type="tns:MatchersUDTType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersUDTType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for UDT names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This table matcher applies to all unqualified or qualified UDT names matched by this expression. If left empty, this matcher applies to all UDTs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="udtClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.UDT} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="udtIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.UDT} identifier.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="udtExtends" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides a super class that a generated {@link org.jooq.UDT} should extend.
<p>        
jOOQ internals make a few assumptions about what a {@link org.jooq.UDT} does, so to minimise
unexpected behaviour, custom table super classes should extend {@link org.jooq.impl.UDTImpl}
and follow its (undocumented!) assumptions (e.g. constructors, etc.). Use this at your own risk.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="udtImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.UDT} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="pathClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated UDT path object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pathExtends" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides a super class that a generated UDT path object should extend.
<p>        
jOOQ internals make a few assumptions about what a {@link org.jooq.UDTRecord} does, so to minimise
unexpected behaviour, custom UDT record super classes should extend {@link org.jooq.impl.UDTPathTableFieldImpl}
and follow its (undocumented!) assumptions (e.g. constructors, etc.). Use this at your own risk.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pathImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated UDT path object should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.UDTRecord} object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordExtends" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides a super class that a generated {@link org.jooq.UDTRecord} should extend.
<p>        
jOOQ internals make a few assumptions about what a {@link org.jooq.UDTRecord} does, so to minimise
unexpected behaviour, custom UDT record super classes should extend {@link org.jooq.impl.UDTRecordImpl}
and follow its (undocumented!) assumptions (e.g. constructors, etc.). Use this at your own risk.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated {@link org.jooq.UDTRecord} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordTypeClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated record type that is implemented by hierarchical {@link org.jooq.UDTRecord} objects.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordTypeImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated record type that is implemented by hierarchical {@link org.jooq.UDTRecord} should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="interfaceClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated interface implemented by the {@link org.jooq.UDTRecord} and/or the POJO.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="interfaceImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated interface (which is implemented by the {@link org.jooq.UDTRecord} and/or POJO) should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojoClass" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated POJOs object.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojoExtends" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides a super class that a generated POJO should extend.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojoImplements" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This string provides additional interfaces that a generated POJO should implement.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatchersAttributesType">
    <sequence>
      <element name="attribute" type="tns:MatchersAttributeType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="MatchersAttributeType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Declarative naming strategy configuration for UDT attribute names.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This field matcher applies to all unqualified or qualified UDT attribute names matched by this expression. If left empty, this matcher applies to all fields.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="attributeIdentifier" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of the generated {@link org.jooq.UDTField} identifier.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="attributeMember" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of generated members (e.g. in POJOs) corresponding to this {@link org.jooq.UDTField}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="attributeSetter" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of generated setters (e.g. in {@link org.jooq.UDTRecord} and/or POJOs) corresponding to this {@link org.jooq.UDTField}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="attributeGetter" type="tns:MatcherRule" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This rule influences the naming of generated getters (e.g. in {@link org.jooq.UDTRecord} and/or POJOs) corresponding to this {@link org.jooq.UDTField}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="udtMemberOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated udt members (table fields) should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="recordSetterOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated record setters should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordGetterOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated record getters should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordMemberOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated record members (properties) should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="recordTypeSetterOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated record type setters should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordTypeGetterOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated record type getters should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordTypeMemberOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated record type members (properties) should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="interfaceSetterOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated interface setters should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="interfaceGetterOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated interface getters should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="interfaceMemberOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated interface members (properties) should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="pojoSetterOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated POJO setters should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojoGetterOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated POJO getters should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojoMemberOverride" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether an "override" modifier in generated POJO members (properties) should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="MatcherRule">
    <all>
      <element name="transform" type="tns:MatcherTransformType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A pre-defined transformation type that transforms this rule's output into a specific format.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="expression" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A replacement expression that transforms the matched expression in a new value.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <simpleType name="MatcherTransformType">
    <restriction base="string">
      <enumeration value="AS_IS">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link MatcherRule} should not transform identifiers, but output them "as is" (as the input is).]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="LOWER">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link MatcherRule} should transform identifiers to lower case.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="LOWER_FIRST_LETTER">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link MatcherRule} should transform the first letters of identifiers to lower case.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="UPPER">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link MatcherRule} should transform identifiers to UPPER case.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="UPPER_FIRST_LETTER">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link MatcherRule} should transform the first letters of identifiers to UPPER case.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="CAMEL">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link MatcherRule} should transform identifiers to camelCase.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="PASCAL">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link MatcherRule} should transform identifiers to PascalCase.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
    </restriction>
  </simpleType>

  <complexType name="Database">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Configuration of the database meta data source.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <!--

        -->
      <element name="name" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The database dialect from jooq-meta.
Available dialects are named <code>org.util.[database].[database]Database</code>.
<p>
Natively supported values are:
<ul>
<li>{@link org.jooq.meta.ase.ASEDatabase}</li>
<li>{@link org.jooq.meta.cockroachdb.CockroachDBDatabase}</li>
<li>{@link org.jooq.meta.db2.DB2Database}</li>
<li>{@link org.jooq.meta.derby.DerbyDatabase}</li>
<li>{@link org.jooq.meta.firebird.FirebirdDatabase}</li>
<li>{@link org.jooq.meta.h2.H2Database}</li>
<li>{@link org.jooq.meta.hana.HanaDatabase}</li>
<li>{@link org.jooq.meta.hsqldb.HSQLDBDatabase}</li>
<li>{@link org.jooq.meta.informix.InformixDatabase}</li>
<li>{@link org.jooq.meta.ingres.IngresDatabase}</li>
<li>{@link org.jooq.meta.mariadb.MariaDBDatabase}</li>
<li>{@link org.jooq.meta.mysql.MySQLDatabase}</li>
<li>{@link org.jooq.meta.oracle.OracleDatabase}</li>
<li>{@link org.jooq.meta.postgres.PostgresDatabase}</li>
<li>{@link org.jooq.meta.redshift.RedshiftDatabase}</li>
<li>{@link org.jooq.meta.sqlite.SQLiteDatabase}</li>
<li>{@link org.jooq.meta.sqlserver.SQLServerDatabase}</li>
<li>{@link org.jooq.meta.sybase.SybaseDatabase}</li>
<li>{@link org.jooq.meta.vertica.VerticaDatabase}</li>
<li>{@link org.jooq.meta.yugabytedb.YugabyteDBDatabase}</li>
</ul>
<p>
This value can be used to reverse-engineer generic JDBC DatabaseMetaData (e.g. for MS Access).
<ul>
<li>{@link org.jooq.meta.jdbc.JDBCDatabase}</li>
</ul>
<p>
This value can be used to reverse-engineer standard jOOQ-meta XML formats.
<ul>
<li>{@link org.jooq.meta.xml.XMLDatabase}</li>
</ul>
<p>
This value can be used to reverse-engineer JPA annotated entities
<ul>
<li>{@link org.jooq.meta.extensions.jpa.JPADatabase}</li>
</ul>
<p>
You can also provide your own org.jooq.meta.Database implementation
here, if your database is currently not supported]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="java" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A self-contained, inline implementation of {@link org.jooq.meta.Database} that will be compiled and class-loaded on the fly by the code generator.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="properties" type="tns:Properties" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The properties that will be passed to the Database instance as configured above.
<p>
Known supported properties include:
<p>
<ul>
<li>{@link org.jooq.meta.xml.XMLDatabase}<p>
<pre>dialect=ORACLE
xml-file=C:\path\to\database.xml
xsl-files=C:\path\to\1.xsl,C:\path\to\2.xsl</pre></li>
<li>{@link org.jooq.meta.extensions.jpa.JPADatabase}<p>
<pre>packages=com.example.entities</pre></li>
<li>{@link org.jooq.meta.extensions.ddl.DDLDatabase}<p>
<pre>scripts=C:\path\to\database.sql
encoding=UTF-8</pre></li>
</ul>]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="regexFlags" type="tns:RegexFlags" minOccurs="0" maxOccurs="1" default="COMMENTS CASE_INSENSITIVE">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The flags that will be applied to all regular expressions from this configuration by default.
<p>
The default value is "COMMENTS CASE_INSENSITIVE"]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="regexMatchesPartialQualification" type="boolean" minOccurs="0" maxOccurs="1" default="true">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether regular expressions that match qualified object names also match partial qualifications (e.g. `table\.column` matches `schema.table.column`) or only full and/or no qualifications (e.g. `schema\.table\.column` and `column` match `schema.table.column`)]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="sqlMatchesPartialQualification" type="boolean" minOccurs="0" maxOccurs="1" default="true">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether SQL queries that match qualified object names also match partial qualifications (e.g. `table\.column` matches `schema.table.column`) or only full and/or no qualifications (e.g. `schema\.table\.column` and `column` match `schema.table.column`)]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includes" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All elements that are generated from your schema.
<p>
This is a Java regular expression. Use the pipe to separate several expressions.
Watch out for case-sensitivity. Depending on your database, this might be
important!
<p>
You can create case-insensitive regular expressions
using this syntax: <code>(?i:expr)</code>
<p>
Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeSql" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All elements that are generated from your schema.
<p>
This is a query that produces Java regular expressions, which are appended to the ones produced by includes.
Watch out for case-sensitivity. Depending on your database, this might be
important!
<p>
You can create case-insensitive regular expressions
using this syntax: <code>(?i:expr)</code>
<p>
Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}.
<p>
Excludes match before includes, i.e. excludes have a higher priority.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="excludes" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All elements that are excluded from your schema.
<p>
This is a Java regular expression. Use the pipe to separate several expressions.
Excludes match before includes, i.e. excludes have a higher priority.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="excludeSql" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All elements that are excluded from your schema.
<p>
This is a query that produces Java regular expressions, which are appended to the ones produced by excludes.
Watch out for case-sensitivity. Depending on your database, this might be
important!
<p>
You can create case-insensitive regular expressions
using this syntax: <code>(?i:expr)</code>
<p>
Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}.
<p>
Excludes match before includes, i.e. excludes have a higher priority.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeExcludeColumns" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether include / exclude patterns should also match columns within tables.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeExcludePackageRoutines" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether include / exclude patterns should also match routines within packages.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeTables" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether tables should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeEmbeddables" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether embeddable types should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeRoutines" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether routines should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeTriggerRoutines" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether trigger implementation routines should be included in output produced by this database (e.g. in PostgreSQL)]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includePackages" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether packages should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includePackageRoutines" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether routines contained in packages should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includePackageUDTs" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether UDTs contained in packages should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includePackageConstants" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether constants contained in packages should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeXMLSchemaCollections" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether XML schema collections should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeUDTs" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether udts should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeDomains" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether domains should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeTriggers" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether triggers should be included in output produced by this database.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeSynonyms" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether synonyms should be included in output produced by this database.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeSequences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether sequences should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeIndexes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether indexes should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includePrimaryKeys" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether primary keys should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeUniqueKeys" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether unique keys should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeForeignKeys" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether foreign keys should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeCheckConstraints" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether check constraints should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="includeSystemTables" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether system tables should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="includeSystemIndexes" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether system generated indexes should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="includeSystemCheckConstraints" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether system generated check constraints should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="includeSystemSequences" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether system generated sequences should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="includeSystemUDTs" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether system generated UDTs should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeInvisibleColumns" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether invisible columns should be included in output produced by this database]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="invisibleColumnsAsHidden" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[This flag indicates whether invisible columns should marked as {@link org.jooq.DataType#hidden()} in output produced by this database.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="recordVersionFields" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All table and view columns that are used as "version" fields for optimistic locking.
<p>
This is a Java regular expression. Use the pipe to separate several expressions.
See {@link org.jooq.UpdatableRecord#store()} and {@link org.jooq.UpdatableRecord#delete()} for details about optimistic locking.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordTimestampFields" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All table and view columns that are used as "timestamp" fields for optimistic locking.
<p>
This is a Java regular expression. Use the pipe to separate several expressions.
See {@link org.jooq.UpdatableRecord#store()} and {@link org.jooq.UpdatableRecord#delete()} for details about optimistic locking.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="comments" type="tns:CommentsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The documentation configuration.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="syntheticObjects" type="tns:SyntheticObjectsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The synthetic objects configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="syntheticIdentities" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all columns that represent identities.
<p>
To be used if columns are not detected as automatically as identities.
<p>
This will always produce <code>GENERATED BY DEFAULT</code> generation mode. To produce the <code>GENERATED ALWAYS</code> mode, use the more explicit synthetic identity configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="syntheticPrimaryKeys" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all columns that participate in "synthetic" primary keys,
which should be placed on generated {@link org.jooq.UpdatableRecord}
<p>
To be used with:
<ul>
<li>{@link org.jooq.UpdatableRecord#store()}</li>
<li>{@link org.jooq.UpdatableRecord#update()}</li>
<li>{@link org.jooq.UpdatableRecord#delete()}</li>
<li>{@link org.jooq.UpdatableRecord#refresh()}</li>
</ul>
<p>
Synthetic primary keys will override existing primary keys.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="overridePrimaryKeys" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All (UNIQUE) key names that should be used instead of primary keys on
generated {@link org.jooq.UpdatableRecord}.
<p>
To be used with:
<ul>
<li>{@link org.jooq.UpdatableRecord#store()}</li>
<li>{@link org.jooq.UpdatableRecord#update()}</li>
<li>{@link org.jooq.UpdatableRecord#delete()}</li>
<li>{@link org.jooq.UpdatableRecord#refresh()}</li>
</ul>
<p>
If several keys match, a warning is emitted and the first one encountered will be used.
<p>
This flag will also replace synthetic primary keys, if it matches.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="dateAsTimestamp" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate {@link java.sql.Timestamp} fields for DATE columns. This is particularly useful for Oracle databases]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="ignoreProcedureReturnValues" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[Ignore procedure return values in Transact-SQL generated code.
<p>
In jOOQ 3.6.0, #4106 was implemented to support Transact-SQL's
optional return values from stored procedures. This turns all procedures
into Routine<Integer> (instead of Routine<Void>). For backwards-
compatibility reasons, users can suppress this change in jOOQ 3.x
<p>
@deprecated This feature is deprecated as of jOOQ 3.6.0 and will be removed again in
jOOQ 4.0.]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>

      <element name="unsignedTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate jOOU data types for your unsigned data types, which are not natively supported in Java]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="integerDisplayWidths" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Include display width in type declaration. In some RDBMS (e.g. MariaDB, MySQL), fixed width integer types are optionally accompanied by a display width. This is sometimes abused to model BOOLEAN types via TINYINT(1). This flag allows for including that display width in the type declaration exposed by jOOQ-meta code, as if it were a numeric precision.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="inputCatalog" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The catalog that is used locally as a source for meta information.
<p>
This cannot be combined with the {@link #getCatalogs()} configuration element.
If left empty (and without any {@link #getCatalogs()} configuration  element), jOOQ will generate all available catalogs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="outputCatalog" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The catalog that is used in generated source code.
<p>
Use this to override your local development
catalog name for source code generation. If not specified, this
will be the same as {@link #getInputCatalog()}
<p>
This will be ignored if {@link #isOutputCatalogToDefault()} is set to true]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="outputCatalogToDefault" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A flag to indicate that the outputCatalog should be the "default" catalog,
which generates catalog-less, unqualified tables, procedures, etc.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="inputSchema" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The schema that is used locally as a source for meta information.
<p>
This cannot be combined with the {@link #getSchemata()} configuration element.
If left empty (and without any {@link #getSchemata()} configuration element), jOOQ will generate all available schemata.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="outputSchema" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The schema that is used in generated source code.
<p>
Use this to override your local development
schema name for source code generation. If not specified, this
will be the same as {@link #getInputSchema()}.

This will be ignored if {@link #isOutputSchemaToDefault()} is set to true]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="outputSchemaToDefault" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A flag to indicate that the outputSchema should be the "default" schema,
which generates schema-less, unqualified tables, procedures, etc.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="catalogs" type="tns:CatalogMappingsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A configuration element to configure several input and/or output
catalogs for jooq-meta, in case you're using jooq-meta in a multi-catalog environment.
<p>
This configuration element cannot be used at the same time as the {@link #getSchemata()} configuration element.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="schemata" type="tns:SchemaMappingsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A configuration element to configure several input and/or output
schemata for jooq-meta, in case you're using jooq-meta in a multi-schema environment.
<p>
Using this configuration element in an enviroment that supports multiple
catalogs means that all catalogs are generated.
<p>
This configuration element cannot be used at the same time as the {@link #getCatalogs()} configuration element.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="schemaVersionProvider" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A custom version number that, if available, will be used to assess whether the
{@link #getInputSchema()} will need to be regenerated.
<p>
There are three operation modes for this element:
<ul>
<li>The value is a class that can be found on the classpath and that implements
  {@link org.jooq.meta.SchemaVersionProvider}. Such classes must provide a default constructor</li>
<li>The value is a SELECT statement that returns one record with one column. The
  SELECT statement may contain a named variable called :schema_name</li>
<li>The value is a constant, such as a Maven property</li>
</ul>
<p>
Schema versions will be generated into the {@link javax.annotation.processing.Generated} annotation on
generated artefacts.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="catalogVersionProvider" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A custom version number that, if available, will be used to assess whether the
{@link #getInputCatalog()} from a given catalog will need to be regenerated.
<p>
There are three operation modes for this element:
<ul>
<li>The value is a class that can be found on the classpath and that implements
  {@link org.jooq.meta.CatalogVersionProvider}. Such classes must provide a default constructor</li>
<li>The value is a SELECT statement that returns one record with one column. The
  SELECT statement may contain a named variable called :catalog_name</li>
<li>The value is a constant, such as a Maven property</li>
<p>
Catalog versions will be generated into the {@link javax.annotation.processing.Generated} annotation on
generated artefacts.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="skipRegenerationOnUpToDateVersion" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[By default, a <code>catalogVersionProvider</code> or <code>schemaVersionProvider</code> allows for skipping regeneration of schemas that are up to date.
<p>
This flag allows for enforcing re-regeneration, e.g. when other, non-schema specific things have changed that require a regeneration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="orderProvider" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A custom {@link java.util.Comparator} that can compare two {@link org.jooq.meta.Definition} objects to determine their order.
<p>
This comparator can be used to influence the order of any object that is produced by jOOQ meta, and thus, indirectly, the order of declared objects in generated code.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="embeddables" type="tns:EmbeddableDefinitionTypes" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Configure embeddable types.]]></jxb:javadoc></jxb:property></appinfo></annotation>      
      </element>
            
      <element name="embeddablePrimaryKeys" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all primary key declarations for which wrapper types should be generated, and for their referencing foreign keys.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="embeddableUniqueKeys" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all unique key declarations for which wrapper types should be generated, and for their referencing foreign keys.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="embeddableDomains" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all domain type declarations for which wrapper types should be generated.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="embeddableColumns" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all columns for which an embeddable definition should be generated.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="readonlyIdentities" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether all identity columns should expose {@link org.jooq.DataType#readonly()} behaviour.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="readonlyGeneratedByDefaultIdentities" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether <code>GENERATED BY DEFAULT AS IDENTITY</code> columns should expose {@link org.jooq.DataType#readonly()} behaviour.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="readonlyGeneratedAlwaysIdentities" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether <code>GENERATED ALWAYS AS IDENTITY</code> columns should expose {@link org.jooq.DataType#readonly()} behaviour.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="readonlyComputedColumns" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether computed columns should expose {@link org.jooq.DataType#readonly()} behaviour.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="readonlyNonUpdatableColumns" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether columns that are known not to be updatable (e.g. in views) should expose {@link org.jooq.DataType#readonly()} behaviour.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="customTypes" type="tns:CustomTypes" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use {@link #getForcedTypes()} only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>

      <element name="enumTypes" type="tns:EnumTypes" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>

      <element name="forcedTypes" type="tns:ForcedTypes" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Configure type overrides for generated fields, attributes, sequences, parameters.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="forcedTypesForBuiltinDataTypeExtensions" type="boolean" minOccurs="0" maxOccurs="1" default="true">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Enable some default forced type configurations for built in data type extensions, such as the ones from the jooq-postgres-extensions module.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="forcedTypesForXMLSchemaCollections" type="boolean" minOccurs="0" maxOccurs="1" default="true">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Enable some default forced type configurations for XML schema collections, mapping them to JAXB annotated types using the {@link org.jooq.impl.XMLtoJAXBConverter}
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="forceIntegerTypesOnZeroScaleDecimals" type="boolean" minOccurs="0" maxOccurs="1" default="true">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Historically, zero-scale decimal types are generated as their most appropriate, corresponding integer type (e.g. NUMBER(2, 0) and less: Byte). This allows for turning off this feature. In case of conflict between this rule and actual {@link #getForcedTypes()}, the latter will win.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tableValuedFunctions" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use tableValuedFunctionsAsRoutines and/or tableValuedFunctionsAsTables]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>

      <element name="tableValuedFunctionsAsRoutines" type="boolean" minOccurs="0" maxOccurs="1" default="true">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether table valued functions should be reported as routines.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tableValuedFunctionsAsTables" type="boolean" minOccurs="0" maxOccurs="1" default="true">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether table valued functions should be reported as tables.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="oracleUseDBAViews" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Specify whether to use the Oracle DBA_XYZ views instead of the ALL_XYZ views.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="logSlowQueriesAfterSeconds" type="int" minOccurs="0" maxOccurs="1" default="5">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The number of seconds that are considered "slow" before a query is logged to indicate a bug, 0 for not logging.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="logSlowResultsAfterSeconds" type="int" minOccurs="0" maxOccurs="1" default="5">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The number of seconds that are considered "slow" before a result set is logged to indicate a bug, 0 for not logging.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="CommentsType">
    <sequence>
      <element name="comment" type="tns:CommentType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="CommentType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[The documentation configuration.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="expression" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all objects that should be commented.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="message" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A comment that should be added to objects matched by this configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="deprecated" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether the comment is a deprecation notice.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="includeSchemaComment" type="boolean" minOccurs="0" maxOccurs="1" default="true">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether the schema comment (if available) should be included and prepended to the message.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="ignoreUnused" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Set this flag to true if no warning should be logged if this object was not used by a code generation run.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="SyntheticObjectsType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Synthetic objects configuration.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="readonlyColumns" type="tns:SyntheticReadonlyColumnsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic read only columns configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="readonlyRowids" type="tns:SyntheticReadonlyRowidsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic ROWIDs configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="columns" type="tns:SyntheticColumnsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic columns configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="identities" type="tns:SyntheticIdentitiesType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic identity configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="defaults" type="tns:SyntheticDefaultsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic default configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="enums" type="tns:SyntheticEnumsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic enum configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="primaryKeys" type="tns:SyntheticPrimaryKeysType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic primary key configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="uniqueKeys" type="tns:SyntheticUniqueKeysType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic unique key configuration.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="foreignKeys" type="tns:SyntheticForeignKeysType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic unique key configuration.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="synonyms" type="tns:SyntheticSynonymsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic synonym configuration.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="views" type="tns:SyntheticViewsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic view configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="daos" type="tns:SyntheticDaosType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic DAOs configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="SyntheticReadonlyColumnsType">
    <sequence>
      <element name="readonlyColumn" type="tns:SyntheticReadonlyColumnType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  
  <complexType name="SyntheticReadonlyColumnType">
    <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic readonly column configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
    <all>
      <element name="tables" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all tables on which to apply this synthetic readonly column.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fields" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all fields on which to apply this synthetic readonly column.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="ignoreUnused" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Set this flag to true if no warning should be logged if this object was not used by a code generation run.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="SyntheticReadonlyRowidsType">
    <sequence>
      <element name="readonlyRowid" type="tns:SyntheticReadonlyRowidType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  
  <complexType name="SyntheticReadonlyRowidType">
    <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic ROWIDs configurationA regular expression matching all tables for which a synthetic <code>ROWID</code> column should be generated.
<p>
Use this along with the synthetic primary key feature to replace existing primary key usage by <code>ROWID</code> usage, if this makes sense for your {@link UpdatableRecord}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
    <all>
      <element name="name" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The optional ROWID column name.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tables" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all tables on which to apply this synthetic ROWID.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="ignoreUnused" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Set this flag to true if no warning should be logged if this object was not used by a code generation run.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="SyntheticColumnsType">
    <sequence>
      <element name="column" type="tns:SyntheticColumnType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  
  <complexType name="SyntheticColumnType">
    <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic column configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
    <all>
      <element name="tables" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all tables on which to apply this synthetic readonly column.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="name" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The column name.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="type" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The column type.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="comment" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The column comment.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="ignoreUnused" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Set this flag to true if no warning should be logged if this object was not used by a code generation run.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="SyntheticIdentitiesType">
    <sequence>
      <element name="identity" type="tns:SyntheticIdentityType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  
  <complexType name="SyntheticIdentityType">
    <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic identity configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
    <all>
      <element name="tables" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all tables on which to apply this synthetic identity.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fields" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all fields on which to apply this synthetic identity.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="ignoreUnused" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Set this flag to true if no warning should be logged if this object was not used by a code generation run.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="generationMode" type="tns:SyntheticIdentityGenerationMode" default="BY DEFAULT" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The generation mode for the synthetic identities]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="SyntheticDefaultsType">
    <sequence>
      <element name="default" type="tns:SyntheticDefaultType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  
  <simpleType name="SyntheticIdentityGenerationMode">
    <restriction base="string">
      <enumeration value="BY DEFAULT">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[<code>BY DEFAULT</code> generation mode.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="ALWAYS">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[<code>ALWAYS</code> generation mode.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
    </restriction>
  </simpleType>
  
  <complexType name="SyntheticDefaultType">
    <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic default configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
    <all>
      <element name="tables" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all tables on which to apply this synthetic default.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fields" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all fields on which to apply this synthetic default.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The default expression to apply to the field. This is expected to be a valid SQL expression, e.g. <code>'some string'</code>, not <code>some string</code>]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="ignoreUnused" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Set this flag to true if no warning should be logged if this object was not used by a code generation run.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="SyntheticEnumsType">
    <sequence>
      <element name="enum" type="tns:SyntheticEnumType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  
  <complexType name="SyntheticEnumType">
    <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic enum configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
    <all>
      <element name="name" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The optional enum name. If provided, then literals must match for each table/field match (though matches are optional). If omitted, then the name is generated based on each table/field match.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tables" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all tables on which to apply this synthetic enum type.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fields" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all fields on which to apply this synthetic enum type.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="literals" type="tns:SyntheticEnumLiteralsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A list of literals to be configured directly in the synthetic enum.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="literalSql" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A SQL query producing the literals.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="literalsFromColumnContent" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The matched column's content defines the literals (this is convenience for {@link #literalSql} being <code>SELECT DISTINCT matched_column FROM matched_table</code>).]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="literalsFromCheckConstraints" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The list of literals is parsed from the applicable <code>CHECK</code> constraints for the matched column, if possible.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="comment" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The enum comment.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="ignoreUnused" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Set this flag to true if no warning should be logged if this object was not used by a code generation run.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="SyntheticEnumLiteralsType">
    <sequence>
      <element name="literal" type="string" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  
  <complexType name="SyntheticPrimaryKeysType">
    <sequence>
      <element name="primaryKey" type="tns:SyntheticPrimaryKeyType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  
  <complexType name="SyntheticPrimaryKeyType">
    <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic primary key configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
    <all>
      <element name="name" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The optional primary key name.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tables" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all tables on which to apply this synthetic primary key.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fields" type="tns:SyntheticKeyFieldsType" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A set of regular expressions matching all fields in order on which to apply this new synthetic primary key.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="key" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all unique keys and unique indexes which should be treated as primary key.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="ignoreUnused" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Set this flag to true if no warning should be logged if this object was not used by a code generation run.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="SyntheticUniqueKeysType">
    <sequence>
      <element name="uniqueKey" type="tns:SyntheticUniqueKeyType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  
  <complexType name="SyntheticUniqueKeyType">
    <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic unique key configuration.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
    <all>
      <element name="name" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The optional unique key name.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tables" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all tables on which to apply this synthetic unique key.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fields" type="tns:SyntheticKeyFieldsType" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A set of regular expressions matching all fields in order on which to apply this synthetic unique key.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="ignoreUnused" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Set this flag to true if no warning should be logged if this object was not used by a code generation run.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="SyntheticForeignKeysType">
    <sequence>
      <element name="foreignKey" type="tns:SyntheticForeignKeyType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  
  <complexType name="SyntheticForeignKeyType">
    <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic foreign key configuration.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
    <all>
      <element name="name" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The optional foreign key name.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tables" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all tables on which to apply this synthetic foreign key.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fields" type="tns:SyntheticKeyFieldsType" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A set of regular expressions matching fields in order on which to apply this synthetic foreign key.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="referencedTable" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching a table that is referenced by this synthetic foreign key.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="referencedFields" type="tns:SyntheticKeyFieldsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A set regular of regular expressions matching fields in order that are referenced by this synthetic foreign key.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="referencedKey" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching a key that is referenced by this synthetic foreign key.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="ignoreUnused" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Set this flag to true if no warning should be logged if this object was not used by a code generation run.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="SyntheticKeyFieldsType">
    <sequence>
      <element name="field" type="string" minOccurs="0" maxOccurs="unbounded">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching a key field that is referenced by a synthetic key.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </sequence>
  </complexType>
  
  <complexType name="SyntheticSynonymsType">
    <sequence>
      <element name="synonym" type="tns:SyntheticSynonymType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  
  <complexType name="SyntheticSynonymType">
    <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic synonym configuration.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
    <all>
      <element name="catalog" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining catalog of the synonym.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="schema" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining schema of the synonym.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="name" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The synonym name.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="table" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching a table to which to apply this synthetic synonym.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="ignoreUnused" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Set this flag to true if no warning should be logged if this object was not used by a code generation run.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="SyntheticViewsType">
    <sequence>
      <element name="view" type="tns:SyntheticViewType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  
  <complexType name="SyntheticViewType">
    <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic view configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
    <all>
      <element name="catalog" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining catalog of the view.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="schema" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining schema of the view.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="name" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining name of the view.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="comment" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining comment on the view.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="sql" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining SQL query.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="ignoreUnused" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Set this flag to true if no warning should be logged if this object was not used by a code generation run.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="SyntheticDaosType">
    <sequence>
      <element name="view" type="tns:SyntheticDaoType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  
  <complexType name="SyntheticDaoType">
    <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic DAO configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
    <all>
      <element name="catalog" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining catalog of the DAO.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="schema" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining schema of the DAO.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="name" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining name of the DAO.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="comment" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining comment on the DAO.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="methods" type="tns:SyntheticDaoMethodsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The methods on the DAO.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="SyntheticDaoMethodsType">
    <sequence>
      <element name="method" type="tns:SyntheticDaoMethodType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
  
  <complexType name="SyntheticDaoMethodType">
    <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Synthetic DAO method configuration]]></jxb:javadoc></jxb:property></appinfo></annotation>
    <all>
      <element name="name" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining name of the DAO method.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="comment" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining comment on the DAO method.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="returnType" type="string" minOccurs="0" maxOccurs="1" default="void">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The return type of the DAO method, defaulting to <code>void</code>.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="sql" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining SQL query.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="CatalogMappingsType">
    <sequence>
      <element name="catalog" type="tns:CatalogMappingType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="CatalogMappingType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Configuration of an input catalog and its mappings.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="inputCatalog" type="string" default="" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[See also {@link Database#getInputCatalog()}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="outputCatalog" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[See also {@link Database#getOutputCatalog()}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="outputCatalogToDefault" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[See also {@link Database#isOutputCatalogToDefault()}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="schemata" type="tns:SchemaMappingsType" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The configuration of schemas inside of this catalog, if any.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="SchemaMappingsType">
    <sequence>
      <element name="schema" type="tns:SchemaMappingType" minOccurs="0" maxOccurs="unbounded"/>
    </sequence>
  </complexType>

  <complexType name="SchemaMappingType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Configuration of an input schema and its mappings.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="inputSchema" type="string" default="" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[See also {@link Database#getInputSchema()}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="outputSchema" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[See also {@link Database#getOutputSchema()}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="outputSchemaToDefault" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[See also {@link Database#isOutputSchemaToDefault()}]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="CustomTypes">
    <sequence>
      <element name="customType" type="tns:CustomType" minOccurs="0" maxOccurs="unbounded" />
    </sequence>
  </complexType>

  <complexType name="EnumTypes">
    <sequence>
      <element name="enumType" type="tns:EnumType" minOccurs="0" maxOccurs="unbounded" />
    </sequence>
  </complexType>
  
  <complexType name="EmbeddableDefinitionTypes">
    <sequence>
      <element name="embeddable" type="tns:EmbeddableDefinitionType" minOccurs="0" maxOccurs="unbounded" />
    </sequence>
  </complexType>

  <complexType name="ForcedTypes">
    <sequence>
      <element name="forcedType" type="tns:ForcedType" minOccurs="0" maxOccurs="unbounded" />
    </sequence>
  </complexType>

  <complexType name="CustomType">
    <annotation>
      <appinfo>
        <jxb:class>
          <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
        </jxb:class>
        <annox:annotate target="class">@java.lang.Deprecated</annox:annotate>
      </appinfo>
    </annotation>
    <all>
      <element name="name" type="string" minOccurs="1" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>

      <element name="type" type="string" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>

      <element name="visibilityModifier" type="tns:VisibilityModifier" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>
      
      <element name="hidden" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>
      
      <element name="redacted" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>
      
      <element name="generator" type="string" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>
      
      <element name="auditInsertTimestamp" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>
      
      <element name="auditInsertUser" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>
      
      <element name="auditUpdateTimestamp" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>
      
      <element name="auditUpdateUser" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>

      <element name="converter" type="string" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>

      <element name="genericConverter" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>

      <element name="autoConverter" type="boolean" minOccurs="0" maxOccurs="1" fixed="true">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>

      <element name="enumConverter" type="boolean" minOccurs="0" maxOccurs="1" fixed="true">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>

      <element name="xmlConverter" type="boolean" minOccurs="0" maxOccurs="1" fixed="true">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>

      <element name="jsonConverter" type="boolean" minOccurs="0" maxOccurs="1" fixed="true">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>

      <element name="jsonConverterImplementation" type="tns:JSONConverterImplementation" minOccurs="0" maxOccurs="1" fixed="DEFAULT">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>
      
      <element name="lambdaConverter" type="tns:LambdaConverter" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>

      <element name="binding" type="string" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>
      
      <element name="genericBinding" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Use ForcedType only]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>
    </all>
  </complexType>

  <complexType name="EnumType">
    <all>
      <element name="name" type="string" minOccurs="1" maxOccurs="1" />
      <element name="literals" type="string" minOccurs="1" maxOccurs="1" />
    </all>
  </complexType>
  
  <complexType name="EmbeddableDefinitionType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[An embeddable type declaration]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="catalog" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining catalog of the embeddable type, or the catalog of the first matched table if left empty.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="schema" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining schema of the embeddable type, or the schema of the first matched table if left empty.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="name" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining name of the embeddable type.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="comment" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The defining comment on the embeddable type.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="referencingName" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The referencing name of the embeddable type, defaulting to the defining name.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="referencingComment" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The referencing comment on the embeddable type, defaulting to the defining comment.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="tables" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching the tables to which to apply the embeddable definition.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="fields" type="tns:EmbeddableFields" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A set of field specifications for the embeddable type.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="replacesFields" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Specify that the embeddable field replaces its underlying fields in code generation output, and when working with asterisks.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="ignoreUnused" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Set this flag to true if no warning should be logged if this object was not used by a code generation run.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="EmbeddableFields">
    <sequence>
      <element name="field" type="tns:EmbeddableField" minOccurs="0" maxOccurs="unbounded" />
    </sequence>
  </complexType>
  
  <complexType name="EmbeddableField">
    <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A field specification for an embeddable type.]]></jxb:javadoc></jxb:property></appinfo></annotation>
    <all>
      <element name="name" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A name for the field in case the regex does not produce unique names for all matches.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="expression" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regex matching all column names that are part of the embeddable type. The regex must match only one column per table.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="ForcedType">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[A forced type declaration]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="priority" type="int" minOccurs="0" maxOccurs="1" default="0">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The priority among forced types in which to apply this one. Forced types of equal priority will be applied in the order in which they're added to the forced types list (e.g. the Maven lexical XML order)]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="name" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The name (in {@link org.jooq.impl.SQLDataType}) to force any matches to]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="userType" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The type of the user type - e.g. java.time.LocalDateTime.
<p>
If provided, {@link #getName()} will be ignored, and either {@link #getConverter()}
or {@link #getBinding()} is required]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="visibilityModifier" type="tns:VisibilityModifier" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The visibility modifier to be used in generated code for the column that is matched by this forced type, if applicable.
<p>
This has no effect on matched objects that are not columns.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="hidden" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The hidden flag allows for hiding columns from usage in queries by default, unless explicitly projected..
<p>
This has no effect on matched objects that are not columns.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="redacted" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The redacted flag allows for redacting columns when formatting result set output, e.g. in debug logs.
<p>
This has no effect on matched objects that are not columns.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="generator" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link org.jooq.Generator} implementation used for client-side computed columns.
<p>
This has no effect on matched objects that are not columns.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="auditInsertTimestamp" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether this column acts as an audit {@link org.jooq.GeneratorStatementType#INSERT} timestamp.
<p>
This flag produces a {@link #generator} configuration, so it cannot be combined with a custom generator. The different audit flags are mutually exclusive.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="auditInsertUser" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether this column acts as an audit {@link org.jooq.GeneratorStatementType#INSERT} timestamp.
<p>
This flag produces a {@link #generator} configuration, so it cannot be combined with a custom generator. The different audit flags are mutually exclusive.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="auditUpdateTimestamp" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether this column acts as an audit {@link org.jooq.GeneratorStatementType#UPDATE} timestamp.
<p>
This flag produces a {@link #generator} configuration, so it cannot be combined with a custom generator. The different audit flags are mutually exclusive.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="auditUpdateUser" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether this column acts as an audit {@link org.jooq.GeneratorStatementType#UPDATE} timestamp.
<p>
This flag produces a {@link #generator} configuration, so it cannot be combined with a custom generator. The different audit flags are mutually exclusive.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="converter" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A converter implementation for the {@link #getUserType()}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="genericConverter" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether the converter is generic, receiving <code>&lt;T, U&gt;</code> type variables as well as <code>Class&lt;T&gt;</class> and <code>Class&lt;U&gt;</class> constructor arguments.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="autoConverter" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether the converter is an {@link org.jooq.impl.AutoConverter}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="enumConverter" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether the converter is an {@link org.jooq.impl.EnumConverter}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="xmlConverter" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether the converter is an {@link org.jooq.impl.XMLtoJAXBConverter}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="jsonConverter" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether the converter is any of {@link org.jooq.jackson.extensions.converters.JSONtoJacksonConverter}, {@link org.jooq.jackson.extensions.converters.JSONVtoJacksonConverter}, {@link org.jooq.jackson3.extensions.converters.JSONtoJacksonConverter}, {@link org.jooq.jackson3.extensions.converters.JSONVtoJacksonConverter}. Specify {@link #jsonConverterImplementation} to explicitly choose the implementation.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="jsonConverterImplementation" type="tns:JSONConverterImplementation" minOccurs="0" maxOccurs="1" default="DEFAULT">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The explicit JSON converter implementation to choose, defaulting to 1) whatever can be found on the classpath, or 2) Jackson 3 converter support.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="lambdaConverter" type="tns:LambdaConverter" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A lambda converter implementation for the {@link #getUserType()}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="binding" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link org.jooq.Binding} implementation for the custom type.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="genericBinding" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether the binding is generic, receiving <code>&lt;T, U&gt;</code> type variables as well as <code>Class&lt;T&gt;</class> and <code>Class&lt;U&gt;</class> constructor arguments.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="excludeExpression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A Java regular expression matching columns, parameters, attributes,
etc. which must not have this type. Excludes match before includes, i.e.
excludes have a higher priority.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeExpression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A Java regular expression matching columns, parameters, attributes,
etc. to be forced to have this type. If provided, both "includeExpression" and
"includeTypes" must match.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="expression" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The same as {@link #getIncludeExpression()}. This is kept for backwards compatibility reasons.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="expressions" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The same as {@link #getIncludeExpression()}. This is kept for backwards compatibility reasons.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="sql" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A SQL statement that produces a table with one column containing the matched qualified or unqualified column names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="excludeTypes" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A Java regular expression matching data types
which must not have this type. Excludes match before includes, i.e.
excludes have a higher priority.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="includeTypes" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A Java regular expression matching data types to be forced to have this
type. If provided, both "includeExpression" and "includeTypes" must match.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="types" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The same as {@link #getIncludeTypes()}. This is kept for backwards compatibility reasons.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="nullability" type="tns:Nullability" default="ALL" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether this forced type should apply to nullable / non-nullable / all columns]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="objectType" type="tns:ForcedTypeObjectType" default="ALL" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether this forced type should apply to all object types, or only to specific ones]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="ignoreUnused" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Set this flag to true if no warning should be logged if this object was not used by a code generation run.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <complexType name="LambdaConverter">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[A converter taking two lambda definitions.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="from" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The implementation of {@link org.jooq.Converter#from(Object)}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="to" type="string" minOccurs="1" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The implementation of {@link org.jooq.Converter#to(Object)}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="nullable" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether to use {@link org.jooq.Converter#ofNullable(Class, Class, java.util.function.Function, java.util.function.Function)} or {@link org.jooq.Converter#of(Class, Class, java.util.function.Function, java.util.function.Function)}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>
  
  <simpleType name="JSONConverterImplementation">
    <restriction base="string">
      <enumeration value="DEFAULT">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whatever is found on the classpath will be preferred, with a preference to Jackson 3 support over Jackson 2 support.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="JACKSON_2">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Jackson 2 support.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="JACKSON_3">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Jackson 3 support.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
    </restriction>
  </simpleType>
  
  <simpleType name="ForcedTypeObjectType">
    <restriction base="string">
      <enumeration value="ALL">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link ForcedType} should match all database object types.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="ATTRIBUTE">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link ForcedType} should match only UDT attributes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="COLUMN">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link ForcedType} should match only table columns.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="ELEMENT">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link ForcedType} should match only array elements.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="PARAMETER">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link ForcedType} should match only routine parameters.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="SEQUENCE">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link ForcedType} should match only sequences.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
    </restriction>
  </simpleType>

  <complexType name="Generate">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Options strictly related to generated code.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="indexes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate index information.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="relations" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Primary key / foreign key relations should be generated and used.
This is a prerequisite for various advanced features]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="sequenceFlags" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Sequence flags should be generated and used.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="udtPaths" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate UDT path expressions on tables and on UDTs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="udtConstructors" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate UDT constructor expressions on UDTs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="implicitJoinPathsToOne" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate implicit join path constructors on generated tables for outgoing foreign key relationships (to-one relationships)]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="implicitJoinPathsToMany" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate implicit join path constructors on generated tables for incoming foreign key relationships (to-many relationships)]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="implicitJoinPathsManyToMany" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate implicit join path constructors on generated tables for many-to-many relationships. This turns off implicitly, if either of the other path generations are turned off.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="implicitJoinPathTableSubtypes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate implicit join path table subtypes implementing {@link org.jooq.Path} for increased JOIN convenience.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="implicitJoinPathUnusedConstructors" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate implicit join path constructors also if there isn't any outgoing or incoming foreign key relationship.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="implicitJoinPathsUseTableNameForUnambiguousFKs" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether names of unambiguous {@link org.jooq.meta.ForeignKeyDefinition} should be based
on the referenced {@link org.jooq.meta.TableDefinition}.
<p>
When a child table has only one {@link org.jooq.meta.ForeignKeyDefinition} towards a
parent table, then that path is "unambiguous." In that case, some
{@link GeneratorStrategy} implementations may choose to use the parent
table's {@link org.jooq.meta.TableDefinition} for implementations of
{@link org.jooq.codegen.GeneratorStrategy#getJavaMethodName(Definition)}, instead of the
{@link org.jooq.meta.ForeignKeyDefinition}, e.g. for implicit join paths.
<p>
This flag allows for turning off this default behaviour.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="implicitJoinPathsAsKotlinProperties" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether implicit join path constructors should be offered as properties in Kotlin.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="deprecated" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate deprecated code for backwards compatibility]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="deprecationOnUnknownTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate deprecation annotations on references to unknown data types.
This helps to identify columns, attributes, and parameters, which may not be usable through
jOOQ API, without adding custom data type bindings to them.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="instanceFields" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>
      
      <element name="visibilityModifier" type="tns:VisibilityModifier" default="DEFAULT" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The visibility modifier to be used with generated code.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="generatedAnnotation" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Use the {@link org.jooq.Generated} annotation specified by {@link #getGeneratedAnnotationType()} in generated code.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="generatedAnnotationType" type="tns:GeneratedAnnotationType" default="DETECT_FROM_JDK" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Specify the type of {@link org.jooq.Generated} annotation to use in generated code.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="generatedAnnotationDate" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether the {@link org.jooq.Generated} annotation specified by {@link #getGeneratedAnnotationType()} should include the <code>date</code> attribute.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="generatedAnnotationJooqVersion" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether the {@link org.jooq.Generated} annotation specified by {@link #getGeneratedAnnotationType()} should include the jOOQ version.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="generatedAnnotationConfigurationHash" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether the {@link org.jooq.Generated} annotation specified by {@link #getGeneratedAnnotationType()} should include the {@link org.jooq.meta.jaxb.Configuration} hash.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="nonnullAnnotation" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether non-nullable items should be annotated with the annotation type specified in {@link #nonnullAnnotationType}. In SQL and by consequence in jOOQ, non-nullability cannot be guaranteed statically. There may still be some cases (e.g. after unions, outer joins, etc.) where a normally non-null value turns out to be null!]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="nonnullAnnotationType" type="string" default="javax.annotation.Nonnull" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Specify the qualified annotation name for all non-nullable items in generated code, defaulting to the JSR-305 {@link javax.annotation.Nonnull} type.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="nullableAnnotation" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether nullable items should be annotated with the annotation type specified in {@link #nullableAnnotationType}. Unlike {@link #nonnullAnnotation}, nullability can be guaranteed as in SQL, and by consequence in jOOQ, every column expression can be made nullable using some SQL operation.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="nullableAnnotationOnWriteOnlyNullableTypes" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether write-only (e.g. defaulted, non-null) nullable items should be annotated with the annotation type specified in {@link #nullableAnnotationType}. Unlike {@link #nonnullAnnotation}, nullability can be guaranteed as in SQL, and by consequence in jOOQ, every column expression can be made nullable using some SQL operation.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="nullableAnnotationType" type="string" default="javax.annotation.Nullable" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Specify the qualified annotation name for all nullable items in generated code, defaulting to the JSR-305 {@link javax.annotation.Nullable} type.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    
      <element name="constructorPropertiesAnnotation" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate the {@link java.beans.ConstructorProperties} annotation on generated POJOs and/or records.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="constructorPropertiesAnnotationOnPojos" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate the {@link java.beans.ConstructorProperties} annotation on generated POJOs (defaults to <code>true</code> if {@link #constructorPropertiesAnnotation} is active).]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="constructorPropertiesAnnotationOnRecords" type="boolean" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate the {@link java.beans.ConstructorProperties} annotation on generated records (defaults to <code>true</code> if {@link #constructorPropertiesAnnotation} is active).]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="routines" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate Routine classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="sequences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate Sequence classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="triggers" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate Trigger classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="synonyms" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate Synonym classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="udts" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate UDT classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="queues" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate Queue classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="links" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate database Link classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="keys" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate Key classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="tables" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate Table classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="embeddables" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate embeddable classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="records" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate TableRecord classes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordsIncludes" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All the object identifiers for which to generate records, by default, all of them.
<p>
This is a Java regular expression. Use the pipe to separate several expressions.
Watch out for case-sensitivity. Depending on your database, this might be
important!
<p>
You can create case-insensitive regular expressions
using this syntax: <code>(?i:expr)</code>
<p>
Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordsExcludes" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All the object identifiers for which not to generate records.
<p>
This is a Java regular expression. Use the pipe to separate several expressions.
Watch out for case-sensitivity. Depending on your database, this might be
important!
<p>
You can create case-insensitive regular expressions
using this syntax: <code>(?i:expr)</code>
<p>
Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="recordsImplementingRecordN" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate TableRecord classes that implement Record[N] super types]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="enumsAsScalaSealedTraits" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation>
          <appinfo>
            <jxb:property>
              <jxb:javadoc><![CDATA[@deprecated Activate the legacy Scala sealed trait enum emulation]]></jxb:javadoc>
            </jxb:property>
            <annox:annotate target="getter">@java.lang.Deprecated</annox:annotate>
            <annox:annotate target="setter">@java.lang.Deprecated</annox:annotate>
          </appinfo>
        </annotation>
      </element>
      
      <element name="enumsAsScalaEnums" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate enums as Scala 3.0 enums (if Scala 3 is supported).]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojos" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojosIncludes" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All the object identifiers for which to generate POJOs, by default, all of them.
<p>
This is a Java regular expression. Use the pipe to separate several expressions.
Watch out for case-sensitivity. Depending on your database, this might be
important!
<p>
You can create case-insensitive regular expressions
using this syntax: <code>(?i:expr)</code>
<p>
Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojosExcludes" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All the object identifiers for which not to generate POJOs.
<p>
This is a Java regular expression. Use the pipe to separate several expressions.
Watch out for case-sensitivity. Depending on your database, this might be
important!
<p>
You can create case-insensitive regular expressions
using this syntax: <code>(?i:expr)</code>
<p>
Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojosEqualsAndHashCode" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate basic equals() and hashCode() methods in POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojosEqualsAndHashCodeIncludePrimaryKeyOnly" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Include primary key columns only in generated equals() and hashCode() methods in POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojosEqualsAndHashCodeColumnIncludeExpression" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching columns for inclusion in generated equals() and hashCode() methods in POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojosEqualsAndHashCodeColumnExcludeExpression" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching columns for exclusion in generated equals() and hashCode() methods in POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="pojosToString" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate basic toString() methods in POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
            
      <element name="pojosAsJavaRecordClasses" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate POJOs as records, when using the JavaGenerator.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="pojosAsScalaCaseClasses" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate POJOs as case classes, when using the ScalaGenerator or Scala3Generator.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="pojosAsKotlinDataClasses" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate POJOs as data classes, when using the KotlinGenerator.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="immutablePojos" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate immutable POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="serializablePojos" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate serializable POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="interfaces" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generated interfaces to be implemented by records and/or POJOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="immutableInterfaces" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate immutable interfaces.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="serializableInterfaces" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate serializable interfaces.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="daos" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate DAOs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="daosIncludes" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All the object identifiers for which to generate DAOs, by default, all of them.
<p>
This is a Java regular expression. Use the pipe to separate several expressions.
Watch out for case-sensitivity. Depending on your database, this might be
important!
<p>
You can create case-insensitive regular expressions
using this syntax: <code>(?i:expr)</code>
<p>
Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="daosExcludes" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[All the object identifiers for which not to generate DAOs.
<p>
This is a Java regular expression. Use the pipe to separate several expressions.
Watch out for case-sensitivity. Depending on your database, this might be
important!
<p>
You can create case-insensitive regular expressions
using this syntax: <code>(?i:expr)</code>
<p>
Whitespace is ignored and comments are possible unless overridden in {@link #getRegexFlags()}.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="jooqVersionReference" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate references to the most up to date minor release in {@link org.jooq.Constants} to produce compilation errors if an outdated runtime library is being used.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="jpaAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Annotate POJOs and Records with JPA annotations.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="jpaVersion" type="tns:JpaVersion" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Version of JPA specification is to be used to generate version-specific annotations. If it is omitted, the latest version is used by default.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="validationAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Annotate POJOs and Records with JSR-303 validation annotations]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="springAnnotations" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Annotate DAOs with useful spring annotations such as @Repository or @Autowired.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="springDao" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate an AbstractSpringDAOImpl as a base class for other DAO classes, containing @Transactional annotations, etc.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="kotlinSetterJvmNameAnnotationsOnIsPrefix" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Workaround for Kotlin generating <code>setX()</code> setters instead of <code>setIsX()</code> in byte code for mutable properties called <code>isX</code>.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="kotlinNotNullPojoAttributes" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate non-nullable types on POJO attributes, where column is not null.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="kotlinNotNullRecordAttributes" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate non-nullable types on Record attributes, where column is not null.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="kotlinNotNullInterfaceAttributes" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate non-nullable types on interface attributes, where column is not null.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="kotlinDefaultedNullablePojoAttributes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate defaulted nullable POJO attributes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="kotlinDefaultedNullableRecordAttributes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate defaulted nullable Record attributes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalObjectNames" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn on generation of all global object names.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalObjectReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all global object references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalCatalogReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global catalog references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalSchemaReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global schema references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalDomainReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global domain references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalTriggerReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global trigger references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalSynonymReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global synonym references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalTableReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global table references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalSequenceReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global sequence references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalUDTReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global UDT references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalRoutineReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global routine references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalQueueReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global queue references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalLinkReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global database link references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalKeyReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global key references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="globalIndexReferences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of global index references.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="defaultCatalog" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of a <code>DefaultCatalog</code> object, which is generated by default in the absence of catalogs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="defaultSchema" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of a <code>DefaultSchema</code> object, which is generated by default in the absence of schemas.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="javadoc" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of Javadoc on all objects.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="comments" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all objects.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnCatalogs" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all catalogs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnSchemas" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all schemas.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnTables" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all tables.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnColumns" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all columns.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnEmbeddables" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all embeddables.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnUDTs" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all UDTs.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnAttributes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all attributes.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnPackages" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all packages.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnRoutines" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all routines.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnParameters" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all parameters.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnSequences" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all sequences.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnDomains" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all domains.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnLinks" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all links.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnQueues" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all queues.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="commentsOnKeys" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all SQL comments as Javadoc on all keys.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="sources" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all source code on all object types.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="sourcesOnViews" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Turn off generation of all source code on all views.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fluentSetters" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate fluent setters in records, POJOs, interfaces.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <!--
        Modify DefaultGeneratorStrategy behaviour to generate getters and setters in JavaBeans style in

        - records
        - pojos
        - interfaces

        If this flag is set to false, then:

        - Column name   : X_INDEX
        - Attribute name: xIndex
        - Getter name   : getXIndex()
        - Setter name   : setXIndex()

        If this flag is set to false, then:

        - Getter name   : getxIndex()
        - Setter name   : setxIndex()

        Custom GeneratorStrategy implementations are unaffected.
        -->
      <element name="javaBeansGettersAndSetters" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Modify DefaultGeneratorStrategy behaviour to generate getters and setters in JavaBeans style in records, POJOs, interfaces.
<p>
If this flag is set to false, then:
<p>
<ul>
<li>Column name   : X_INDEX</li>
<li>Attribute name: xIndex</li>
<li>Getter name   : getXIndex()</li>
<li>Setter name   : setXIndex()</li>
</ul>
<p>
If this flag is set to true, then:
<ul>
<li>Getter name   : getxIndex()</li>
<li>Setter name   : setxIndex()</li>
</ul>
<p>
Custom GeneratorStrategy implementations are unaffected]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="varargSetters" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Generate varargs setters for array types for convenience.
<p>
This may lead to compilation warnings in current Java versions.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="generatedSerialVersionUID" type="tns:GeneratedSerialVersionUID" default="CONSTANT" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The serial version UID to be generated in all files.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="maxMembersPerInitialiser" type="int" default="500" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The maximum number of members per initialiser, to prevent reaching the 64kb byte code per method limit in generated code.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="fullyQualifiedTypes" type="string" default="" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A regular expression matching all the types in generated code that should be fully qualified.
<p>
This can be useful if you have a database object that generates a String
class, and you want to avoid naming clashes with the java.lang package
by specifying <code>java\.lang\..*</code>]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="emptyCatalogs" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether empty catalogs (e.g. empty because of <excludes/> configurations) should still be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="emptySchemas" type="boolean" default="false" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether empty schemas (e.g. empty because of <excludes/> configurations) should still be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="javaTimeTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A flag indicating whether Java 8's java.time types should be used by the
source code generator, rather than JDBC's java.sql types.
<p>
This flag is ignored in the commercial Java 6 distribution of jOOQ 3.9+ ]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="spatialTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A flag indicating whether the spatial type support should be enabled.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="xmlTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A flag indicating whether the XML type support should be enabled.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="jsonTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A flag indicating whether the JSON type support should be enabled.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="intervalTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A flag indicating whether the INTERVAL type support should be enabled.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="decfloatTypes" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A flag indicating whether the DECFLOAT type support should be enabled.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="newline" type="string" default="\n" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The newline characters to be used in generated code. Whitespace characters can be used, e.g. \n, \r\n]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="indentation" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The indentation characters to be used in generated code. If unspecified, an idiomatic default indentation of the language will be used (4 spaces in Java, 2 spaces in Scala). Whitespace characters can be used, e.g. \t]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="printMarginForBlockComment" type="int" minOccurs="0" maxOccurs="1" default="80">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The print margin to apply to generated Javadoc and other block comments, for automatic line wrapping. The feature is turned off if the print margin is <code>0</code>.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="textBlocks" type="tns:GeneratedTextBlocks" minOccurs="0" maxOccurs="1" default="DETECT_FROM_JDK">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether to generate String in text block format.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="whereMethodOverrides" type="boolean" minOccurs="0" maxOccurs="1" default="true">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether to generate overrides for {@link org.jooq.Table#where(org.jooq.Condition)} and related overloads.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="renameMethodOverrides" type="boolean" minOccurs="0" maxOccurs="1" default="true">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether to generate overrides (see <a href="https://github.com/jOOQ/jOOQ/issues/13937">https://github.com/jOOQ/jOOQ/issues/13937</a>) for {@link org.jooq.Table#rename(org.jooq.Name)} and related overloads.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="asMethodOverrides" type="boolean" minOccurs="0" maxOccurs="1" default="true">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether to generate overrides for {@link org.jooq.Table#as(org.jooq.Name)} and related overloads.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="hiddenColumnsInRecords" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether hidden columns should be generated in records.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="hiddenColumnsInPojos" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether hidden columns should be generated in POJOs.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="hiddenColumnsInInterfaces" type="boolean" minOccurs="0" maxOccurs="1" default="false">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether hidden columns should be generated in interfaces.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="redactedColumnsInPojos" type="boolean" minOccurs="0" maxOccurs="1" default="true">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether redacted columns should be redacted in POJOs.
<p>
This feature is available in the commercial distribution only.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <complexType name="Target">
    <annotation><appinfo><jxb:class><jxb:javadoc><![CDATA[Options to define where the generated code should be located.]]></jxb:javadoc></jxb:class></appinfo></annotation>
    <all>
      <element name="packageName" type="string" default="org.jooq.generated" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The destination package of your generated classes (within the destination directory)
<p>
jOOQ may append the schema name to this package if generating multiple schemas,
e.g. org.jooq.generated.schema1, org.jooq.generated.schema2]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="directory" type="string" default="target/generated-sources/jooq" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The destination directory of your generated classes]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="encoding" type="string" default="UTF-8" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The file encoding to be used with all output files.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
      
      <element name="locale" type="string" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The locale to be used with all locale specific operations.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>

      <element name="clean" type="boolean" default="true" minOccurs="0" maxOccurs="1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Whether the target package should be cleaned to contain only generated code after a generation run.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </element>
    </all>
  </complexType>

  <simpleType name="RegexFlags">
    <list itemType="tns:RegexFlag"/>
  </simpleType>

  <simpleType name="RegexFlag">
    <restriction base="string">
      <enumeration value="UNIX_LINES">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Apply the {@link java.util.regex.Pattern#UNIX_LINES} flag to regular expressions from the code generation configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="CASE_INSENSITIVE">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Apply the {@link java.util.regex.Pattern#CASE_INSENSITIVE} flag to regular expressions from the code generation configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="COMMENTS">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Apply the {@link java.util.regex.Pattern#COMMENTS} flag to regular expressions from the code generation configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="MULTILINE">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Apply the {@link java.util.regex.Pattern#MULTILINE} flag to regular expressions from the code generation configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="LITERAL">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Apply the {@link java.util.regex.Pattern#LITERAL} flag to regular expressions from the code generation configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="DOTALL">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Apply the {@link java.util.regex.Pattern#DOTALL} flag to regular expressions from the code generation configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="UNICODE_CASE">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Apply the {@link java.util.regex.Pattern#UNICODE_CASE} flag to regular expressions from the code generation configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="CANON_EQ">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Apply the {@link java.util.regex.Pattern#CANON_EQ} flag to regular expressions from the code generation configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="UNICODE_CHARACTER_CLASS">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Apply the {@link java.util.regex.Pattern#UNICODE_CHARACTER_CLASS} flag to regular expressions from the code generation configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
    </restriction>
  </simpleType>

  <simpleType name="JpaVersion">
    <restriction base="string">
      <enumeration value="1.0">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Assume JPA 1.0 support, or later, in generated code.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="2.0">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Assume JPA 2.0 support, or later, in generated code.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="2.1">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Assume JPA 2.1 support, or later, in generated code.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="2.2">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Assume JPA 2.2 support, or later, in generated code.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
    </restriction>
  </simpleType>

  <simpleType name="Nullability">
    <restriction base="string">
      <enumeration value="ALL">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link ForcedType} should match all columns, attributes, and parameters, irrespective of nullability.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="NULL">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link ForcedType} should match only columns, attributes, and parameters, which are nullable.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="NOT_NULL">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A {@link ForcedType} should match only columns, attributes, and parameters, which are non-nullable.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
    </restriction>
  </simpleType>
  
  <simpleType name="VisibilityModifier">
    <restriction base="string">
      <enumeration value="DEFAULT">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The generated visibility modifier is the default for the target language to produce <code>public</code> visibility (explicit <code>public</code> in Java, nothing in Kotlin, Scala).]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="NONE">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[No visibility modifier is generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="PUBLIC">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[An explicit <code>public</code> visibility modifier is generated, where supported (no modifier is generated in Scala).]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="INTERNAL">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[An explicit <code>internal</code> visibility modifier is generated, where supported (or <code>public</code>, otherwise).]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="PRIVATE">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[A <code>private</code> visibility modifier is generated. This is useful only for {@link ForcedType}, not as a global configuration.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
    </restriction>
  </simpleType>
  
  <simpleType name="GeneratedAnnotationType">
    <restriction base="string">
      <enumeration value="DETECT_FROM_JDK">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The <code>Generated</code> annotation should be detected automatically from the JDK used at code generation time.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="JAVAX_ANNOTATION_GENERATED">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Use the <code>javax.annotation.Generated</code> annotation.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="JAVAX_ANNOTATION_PROCESSING_GENERATED">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Use the <code>javax.annotation.processing.Generated</code> annotation.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="JAKARTA_ANNOTATION_GENERATED">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Use the <code>jakarta.annotation.Generated</code> annotation.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="ORG_JOOQ_GENERATED">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Use the {@link org.jooq.Generated} annotation.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
    </restriction>
  </simpleType>
  
  <simpleType name="GeneratedTextBlocks">
    <restriction base="string">
      <enumeration value="DETECT_FROM_JDK">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Text blocks should be used in generated code (for database source code) depending on whether the JDK used for code generation supports text blocks.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="ON">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Text blocks should be used in generated code (for database source code).]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="OFF">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[Text blocks should not be used in generated code.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
    </restriction>
  </simpleType>
  
  <simpleType name="GeneratedSerialVersionUID">
    <restriction base="string">
      <enumeration value="HASH">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The generated serialVersionUID should be based on a hash code taken from the generated content.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="CONSTANT">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[The generated serialVersionUID should be constant.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
      <enumeration value="OFF">
        <annotation><appinfo><jxb:property><jxb:javadoc><![CDATA[No serialVersionUID should be generated.]]></jxb:javadoc></jxb:property></appinfo></annotation>
      </enumeration>
    </restriction>
  </simpleType>
</schema>
