1  ProducerWithPSetDesc  (global::EDProducer)  "pluginFWCoreIntegrationTestPSet.so"

This plugin has 4 PSet descriptions. The description used to validate a 
configuration is selected by matching the module labels. If none match, then 
the last description, which has no label, is selected. A cfi file will be 
generated for each configuration with a module label.

  1.1 module label: testProducerWithPsetDesc

    testingAutoGeneratedCfi
                        type: untracked bool optional
                        default: True

    p_int
                        type: int32 
                        default: 2147483647
                        A big integer. I am trying to test the wrapping of 
                        comments in the printed output by putting in a long 
                        comment to see if it gets wrapped OK. The comment 
                        should get indented to the second column indent on 
                        every line. By default newlines should be inserted 
                        between words to make the lines fit in the terminal 
                        screen width. There is a command line parameter that 
                        can be set to override this width to any desired value. 
                        If there is no terminal then it should default to 80. 
                        The logic for setting the width is in edmPluginHelp.cpp

    p_int_untracked
                        type: untracked int32 
                        default: -2147483647

    p_int_opt
                        type: int32 optional
                        default: 0

    p_int_optuntracked
                        type: untracked int32 optional
                        default: 7

    p_int_opt_nd
                        type: int32 optional
                        default: none

    p_int_optuntracked_nd
                        type: untracked int32 optional
                        default: none

    vint1
                        type: vint32 
                        default: empty

    vint2
                        type: vint32 
                        default: (vector size = 1)
                          [0]: 2147483647

    vint3
                        type: vint32 
                        default: (vector size = 2)
                          [0]: 2147483647
                          [1]: -2147483647

    vint4
                        type: vint32 
                        default: (vector size = 3)
                          [0]: 2147483647
                          [1]: -2147483647
                          [2]: 0

    uint1
                        type: uint32 
                        default: 4294967295

    uint2
                        type: untracked uint32 
                        default: 0

    vuint1
                        type: vuint32 
                        default: empty

    vuint2
                        type: vuint32 
                        default: (vector size = 1)
                          [0]: 4294967295

    vuint3
                        type: vuint32 
                        default: (vector size = 2)
                          [0]: 4294967295
                          [1]: 0

    vuint4
                        type: vuint32 
                        default: (vector size = 3)
                          [0]: 4294967295
                          [1]: 0
                          [2]: 11

    vuint5
                        type: vuint32 
                        default: see Section 1.1.1

    int64v1
                        type: int64 
                        default: 9000000000000000000

    int64v2
                        type: int64 
                        default: -9000000000000000000

    int64v3
                        type: int64 
                        default: 0

    vint64v1
                        type: vint64 
                        default: empty

    vint64v2
                        type: vint64 
                        default: (vector size = 1)
                          [0]: 9000000000000000000

    vint64v3
                        type: vint64 
                        default: (vector size = 2)
                          [0]: 9000000000000000000
                          [1]: -9000000000000000000

    vint64v4
                        type: vint64 
                        default: (vector size = 3)
                          [0]: 9000000000000000000
                          [1]: -9000000000000000000
                          [2]: 0

    uint64v1
                        type: uint64 
                        default: 18000000000000000000

    uint64v2
                        type: untracked uint64 
                        default: 0

    vuint64v1
                        type: vuint64 
                        default: empty

    vuint64v2
                        type: vuint64 
                        default: (vector size = 1)
                          [0]: 18000000000000000000

    vuint64v3
                        type: vuint64 
                        default: (vector size = 2)
                          [0]: 18000000000000000000
                          [1]: 0

    vuint64v4
                        type: vuint64 
                        default: (vector size = 3)
                          [0]: 18000000000000000000
                          [1]: 0
                          [2]: 11

    doublev1
                        type: double 
                        default: 2.2250738585072014e-308

    doublev2
                        type: untracked double 
                        default: 0

    doublev3
                        type: untracked double 
                        default: 0.3

    vdoublev1
                        type: vdouble 
                        default: empty

    vdoublev2
                        type: vdouble 
                        default: (vector size = 1)
                          [0]: 1e+300

    vdoublev3
                        type: vdouble 
                        default: (vector size = 2)
                          [0]: 1e+300
                          [1]: 0

    vdoublev4
                        type: vdouble 
                        default: (vector size = 3)
                          [0]: 1e+300
                          [1]: 0
                          [2]: 11

    vdoublev5
                        type: vdouble 
                        default: (vector size = 4)
                          [0]: 1e+300
                          [1]: 0
                          [2]: 11
                          [3]: 0.3

    boolv1
                        type: bool 
                        default: True

    boolv2
                        type: bool 
                        default: False

    stringv1
                        type: string 
                        default: 'Hello'

    stringv2
                        type: string 
                        default: ''

    vstringv1
                        type: vstring 
                        default: empty

    vstringv2
                        type: vstring 
                        default: (vector size = 1)
                          [0]: 'Hello'

    vstringv3
                        type: vstring 
                        default: (vector size = 2)
                          [0]: 'Hello'
                          [1]: 'World'

    vstringv4
                        type: vstring 
                        default: (vector size = 3)
                          [0]: 'Hello'
                          [1]: 'World'
                          [2]: ''

    eventIDv1
                        type: EventID 
                        default: 11:12

    eventIDv2
                        type: EventID 
                        default: 101:102

    vEventIDv1
                        type: VEventID 
                        default: empty

    vEventIDv2
                        type: VEventID 
                        default: (vector size = 1)
                          [0]: 1000:1100

    vEventIDv3
                        type: VEventID 
                        default: (vector size = 2)
                          [0]: 1000:1100
                          [1]: 10000:11000

    vEventIDv4
                        type: VEventID 
                        default: (vector size = 3)
                          [0]: 1000:1100
                          [1]: 10000:11000
                          [2]: 100000:110000

    luminosityIDv1
                        type: LuminosityBlockID 
                        default: 11:12

    luminosityIDv2
                        type: LuminosityBlockID 
                        default: 101:102

    vLuminosityBlockIDv1
                        type: VLuminosityBlockID 
                        default: empty

    vLuminosityBlockIDv2
                        type: VLuminosityBlockID 
                        default: (vector size = 1)
                          [0]: 1000:1100

    vLuminosityBlockIDv3
                        type: VLuminosityBlockID 
                        default: (vector size = 2)
                          [0]: 1000:1100
                          [1]: 10000:11000

    vLuminosityBlockIDv4
                        type: VLuminosityBlockID 
                        default: (vector size = 3)
                          [0]: 1000:1100
                          [1]: 10000:11000
                          [2]: 100000:110000

    lumiRangev1
                        type: LuminosityBlockRange 
                        default: 1:1-9:9

    lumiRangev2
                        type: LuminosityBlockRange 
                        default: 3:4-1000:1000

    vLumiRangev1
                        type: VLuminosityBlockRange 
                        default: empty

    vLumiRangev2
                        type: VLuminosityBlockRange 
                        default: (vector size = 1)
                          [0]: 1:1-9:9

    vLumiRangev3
                        type: VLuminosityBlockRange 
                        default: (vector size = 2)
                          [0]: 1:1-9:9
                          [1]: 3:4-1000:1000

    eventRangev1
                        type: EventRange 
                        default: 1:1-8:8

    eventRangev2
                        type: EventRange 
                        default: 3:4-1001:1002

    vEventRangev1
                        type: VEventRange 
                        default: empty

    vEventRangev2
                        type: VEventRange 
                        default: (vector size = 1)
                          [0]: 1:1-8:8

    vEventRangev3
                        type: VEventRange 
                        default: (vector size = 2)
                          [0]: 1:1-8:8
                          [1]: 3:4-1001:1002

    inputTagv1
                        type: InputTag 
                        default: 'One:Two:Three'

    inputTagv2
                        type: InputTag 
                        default: 'One:Two'

    inputTagv3
                        type: InputTag 
                        default: 'One'

    inputTagv4
                        type: InputTag 
                        default: 'One::Three'

    vInputTagv1
                        type: VInputTag 
                        default: empty

    vInputTagv2
                        type: VInputTag 
                        default: (vector size = 1)
                          [0]: 'One:Two:Three'

    vInputTagv3
                        type: VInputTag 
                        default: (vector size = 2)
                          [0]: 'One:Two:Three'
                          [1]: 'One:Two'

    vInputTagv4
                        type: VInputTag 
                        default: (vector size = 3)
                          [0]: 'One:Two:Three'
                          [1]: 'One:Two'
                          [2]: 'One'

    vInputTagv5
                        type: VInputTag 
                        default: (vector size = 4)
                          [0]: 'One:Two:Three'
                          [1]: 'One:Two'
                          [2]: 'One'
                          [3]: 'One::Three'

    esinputTagv1
                        type: ESInputTag 
                        default: 'One:Two'

    esinputTagv2
                        type: ESInputTag 
                        default: 'One:'

    esinputTagv3
                        type: ESInputTag 
                        default: ':Two'

    vESInputTagv1
                        type: VESInputTag 
                        default: empty

    vESInputTagv2
                        type: VESInputTag 
                        default: (vector size = 1)
                          [0]: 'One:Two'

    vESInputTagv3
                        type: VESInputTag 
                        default: (vector size = 2)
                          [0]: 'One:Two'
                          [1]: 'One:'

    vESInputTagv4
                        type: VESInputTag 
                        default: (vector size = 3)
                          [0]: 'One:Two'
                          [1]: 'One:'
                          [2]: ':Two'

    fileInPath
                        type: FileInPath 
                        default: 'FWCore/Integration/plugins/ProducerWithPSetDesc.cc'

    Empty group description

    bar
                        type: PSet 
                        see Section 1.1.2

    test101
                        type: PSet optional
                        see Section 1.1.3 (do not write to cfi)

    test102
                        type: VPSet optional
                        see Section 1.1.4 (do not write to cfi)

    test103
                        type: VPSet optional
                        see Section 1.1.5 (do not write to cfi)

    test104
                        type: untracked VPSet 
                        see Section 1.1.6

    test105
                        type: untracked VPSet 
                        see Section 1.1.7

    test1
                        type: double 
                        default: 0.1

    test2
                        type: double optional
                        default: 0.2

    test3
                        type: double optional
                        default: none (do not write to cfi)

    AND group:
                        optional
                        see Section 1.1.8

    oiswitch (switch)
                        type: int32 optional
                        see Section 1.1.9

    testDeeplyNested2
                        type: PSet 
                        see Section 1.1.10

    bars
                        type: VPSet 
                        see Section 1.1.11

    subpset
                        type: PSet optional
                        see Section 1.1.12

    wildcardPset
                        type: PSet 
                        see Section 1.1.13

    switchPset
                        type: PSet 
                        see Section 1.1.14

    xorPset
                        type: PSet 
                        see Section 1.1.15

    orPset
                        type: PSet 
                        see Section 1.1.16

    andPset
                        type: PSet 
                        see Section 1.1.17

    ifExistsPset
                        type: PSet 
                        see Section 1.1.18

    allowedLabelsPset
                        type: PSet 
                        see Section 1.1.19

    noDefaultPset3
                        type: PSet 
                        see Section 1.1.20

    noDefaultPset4
                        type: PSet 
                        see Section 1.1.21

    plugin
                        type: PSet 
                        see Section 1.1.22

    plugin1
                        type: PSet 
                        see Section 1.1.23

    plugin2
                        type: VPSet 
                        see Section 1.1.24

    plugin3
                        type: VPSet 
                        see Section 1.1.25

    plugin4
                        type: PSet 
                        see Section 1.1.26

    plugin5
                        type: VPSet 
                        see Section 1.1.27

    mightGet
                        type: untracked vstring optional
                        default: none
                        List contains the branch names for the EDProducts which 
                        might be requested by the module.
                        The format for identifying the EDProduct is the same as 
                        the one used for OutputModules, except no wild cards 
                        are allowed. E.g.
                        Foos_foomodule_whichFoo_RECO

    Section 1.1.1 vuint5 default contents: (vector size = 6)
        [0]: 4294967295
        [1]: 0
        [2]: 11
        [3]: 21
        [4]: 31
        [5]: 41

    Section 1.1.2 bar PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.1.3 test101 PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.1.4 test102 VPSet description:
        All elements will be validated using the PSet description in Section 1.1.4.1.
        Does not have a default VPSet.

    Section 1.1.4.1 description of PSet used to validate elements of VPSet:

        Description is empty

    Section 1.1.5 test103 VPSet description:
        All elements will be validated using the PSet description in Section 1.1.5.1.
        Does not have a default VPSet.

    Section 1.1.5.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.1.6 test104 VPSet description:
        All elements will be validated using the PSet description in Section 1.1.6.1.
        The default VPSet has 1 element.
        [0]: see Section 1.1.6.2

    Section 1.1.6.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.1.6.2 PSet description of default VPSet element [0]

        Description is empty

    Section 1.1.7 test105 VPSet description:
        All elements will be validated using the PSet description in Section 1.1.7.1.
        The default VPSet is empty.

    Section 1.1.7.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.1.8 AND group description:
    This optional AND group requires all or none of the following to be in the PSet

        testA
                        type: string 
                        default: 'fooA'

        testB
                        type: int32 
                        default: 100

        testC
                        type: int32 
                        default: 101

    Section 1.1.9 oiswitch (switch):
    The value of "oiswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        oiswitch
                        type: int32 optional
                        default: 1

        if oiswitch = 0
        oivalue
                        type: int32 
                        default: 100

        if oiswitch = 1
        AND group:
                        see Section 1.1.9.1

        if oiswitch = 2
        oivalue
                        type: string 
                        default: '102'

    Section 1.1.9.1 AND group description:
    This AND group requires all of the following to be in the PSet

        oivalue1
                        type: double 
                        default: 101

        oivalue2
                        type: double 
                        default: 101

    Section 1.1.10 testDeeplyNested2 PSet description:

        bswitch (switch)
                        type: bool 
                        see Section 1.1.10.1

        iswitch (switch)
                        type: int32 
                        see Section 1.1.10.2

        sswitch (switch)
                        type: string 
                        see Section 1.1.10.3

        ndiswitch (switch)
                        type: int32 optional (do not write to cfi)
                        see Section 1.1.10.4

        testint
                        type: int32 
                        default: 1000

    Section 1.1.10.1 bswitch (switch):
    The value of "bswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        bswitch
                        type: bool 
                        default: False

        if bswitch = False
        AND group:
                        see Section 1.1.10.1.1

        if bswitch = True
        bvalue
                        type: int32 
                        default: 100

    Section 1.1.10.1.1 AND group description:
    This AND group requires all of the following to be in the PSet

        bvalue1
                        type: double 
                        default: 101

        bvalue2
                        type: double 
                        default: 101

    Section 1.1.10.2 iswitch (switch):
    The value of "iswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        iswitch
                        type: int32 
                        default: 1

        if iswitch = 0
        ivalue
                        type: int32 
                        default: 100

        if iswitch = 1
        AND group:
                        see Section 1.1.10.2.1

        if iswitch = 2
        ivalue
                        type: string 
                        default: '102'

    Section 1.1.10.2.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ivalue1
                        type: double 
                        default: 101

        ivalue2
                        type: untracked double 
                        default: 101

    Section 1.1.10.3 sswitch (switch):
    The value of "sswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        sswitch
                        type: string 
                        default: '1'

        if sswitch = "0"
        svalue
                        type: int32 
                        default: 100

        if sswitch = "1"
        AND group:
                        see Section 1.1.10.3.1

        if sswitch = "2"
        svalue
                        type: string 
                        default: '102'

    Section 1.1.10.3.1 AND group description:
    This AND group requires all of the following to be in the PSet

        svalue1
                        type: double 
                        default: 101

        svalue2
                        type: double 
                        default: 101

    Section 1.1.10.4 ndiswitch (switch):
    The value of "ndiswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        ndiswitch
                        type: int32 optional
                        default: 1

        if ndiswitch = 0
        ndivalue
                        type: int32 
                        default: 100

        if ndiswitch = 1
        AND group:
                        see Section 1.1.10.4.1

        if ndiswitch = 2
        ndivalue
                        type: string 
                        default: '102'

    Section 1.1.10.4.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ndivalue1
                        type: double 
                        default: 101

        ndivalue2
                        type: double 
                        default: 101

    Section 1.1.11 bars VPSet description:
        All elements will be validated using the PSet description in Section 1.1.11.1.
        The default VPSet has 2 elements.
        [0]: see Section 1.1.11.2
        [1]: see Section 1.1.11.3

    Section 1.1.11.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

        testDeeplyNested
                        type: PSet 
                        see Section 1.1.11.1.1

        anotherVPSet
                        type: VPSet 
                        see Section 1.1.11.1.2

    Section 1.1.11.1.1 testDeeplyNested PSet description:

        bswitch (switch)
                        type: bool 
                        see Section 1.1.11.1.1.1

        iswitch (switch)
                        type: int32 
                        see Section 1.1.11.1.1.2

        sswitch (switch)
                        type: string 
                        see Section 1.1.11.1.1.3

        ndiswitch (switch)
                        type: int32 optional (do not write to cfi)
                        see Section 1.1.11.1.1.4

        testint
                        type: int32 
                        default: 1000

    Section 1.1.11.1.1.1 bswitch (switch):
    The value of "bswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        bswitch
                        type: bool 
                        default: False

        if bswitch = False
        AND group:
                        see Section 1.1.11.1.1.1.1

        if bswitch = True
        bvalue
                        type: int32 
                        default: 100

    Section 1.1.11.1.1.1.1 AND group description:
    This AND group requires all of the following to be in the PSet

        bvalue1
                        type: double 
                        default: 101

        bvalue2
                        type: double 
                        default: 101

    Section 1.1.11.1.1.2 iswitch (switch):
    The value of "iswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        iswitch
                        type: int32 
                        default: 1

        if iswitch = 0
        ivalue
                        type: int32 
                        default: 100

        if iswitch = 1
        AND group:
                        see Section 1.1.11.1.1.2.1

        if iswitch = 2
        ivalue
                        type: string 
                        default: '102'

    Section 1.1.11.1.1.2.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ivalue1
                        type: double 
                        default: 101

        ivalue2
                        type: untracked double 
                        default: 101

    Section 1.1.11.1.1.3 sswitch (switch):
    The value of "sswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        sswitch
                        type: string 
                        default: '1'

        if sswitch = "0"
        svalue
                        type: int32 
                        default: 100

        if sswitch = "1"
        AND group:
                        see Section 1.1.11.1.1.3.1

        if sswitch = "2"
        svalue
                        type: string 
                        default: '102'

    Section 1.1.11.1.1.3.1 AND group description:
    This AND group requires all of the following to be in the PSet

        svalue1
                        type: double 
                        default: 101

        svalue2
                        type: double 
                        default: 101

    Section 1.1.11.1.1.4 ndiswitch (switch):
    The value of "ndiswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        ndiswitch
                        type: int32 optional
                        default: 1

        if ndiswitch = 0
        ndivalue
                        type: int32 
                        default: 100

        if ndiswitch = 1
        AND group:
                        see Section 1.1.11.1.1.4.1

        if ndiswitch = 2
        ndivalue
                        type: string 
                        default: '102'

    Section 1.1.11.1.1.4.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ndivalue1
                        type: double 
                        default: 101

        ndivalue2
                        type: double 
                        default: 101

    Section 1.1.11.1.2 anotherVPSet VPSet description:
        All elements will be validated using the PSet description in Section 1.1.11.1.2.1.
        The default VPSet has 2 elements.
        [0]: see Section 1.1.11.1.2.2
        [1]: see Section 1.1.11.1.2.3

    Section 1.1.11.1.2.1 description of PSet used to validate elements of VPSet:

        xvalue
                        type: int32 
                        default: 7

    Section 1.1.11.1.2.2 PSet description of default VPSet element [0]

        Description is empty

    Section 1.1.11.1.2.3 PSet description of default VPSet element [1]

        xvalue
                        type: int32 
                        default: 100

    Section 1.1.11.2 PSet description of default VPSet element [0]

        oDrinks
                        type: uint32 
                        default: 11

    Section 1.1.11.3 PSet description of default VPSet element [1]

        ndouDrinks
                        type: untracked uint32 
                        default: 11

        oDrinks
                        type: uint32 
                        default: 11

        ouDrinks
                        type: untracked uint32 
                        default: 11

        testDeeplyNested
                        type: PSet 
                        see Section 1.1.11.3.1

        anotherVPSet
                        type: VPSet 
                        see Section 1.1.11.3.2

    Section 1.1.11.3.1 testDeeplyNested PSet description:

        testint
                        type: int32 
                        default: 2

    Section 1.1.11.3.2  VPSet description for VPSet that is part of the default of a containing VPSet:
        The default VPSet has 2 elements.
        [0]: see Section 1.1.11.3.2.1
        [1]: see Section 1.1.11.3.2.2

    Section 1.1.11.3.2.1 PSet description of default VPSet element [0]

        Description is empty

    Section 1.1.11.3.2.2 PSet description of default VPSet element [1]

        xvalue
                        type: int32 
                        default: 17

    Section 1.1.12 subpset PSet description:

        xvalue
                        type: int32 
                        default: 11

        bar
                        type: untracked PSet 
                        see Section 1.1.12.1

    Section 1.1.12.1 bar PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.1.13 wildcardPset PSet description:

        p_uint_opt
                        type: uint32 optional
                        default: 0

        labels must match this wildcard pattern: *
                        type: int32 optional
                        criteria: require zero or more

        labels must match this wildcard pattern: *
                        type: untracked double optional
                        criteria: require zero or more
                        A comment for a wildcard parameter

        labels must match this wildcard pattern: *
                        type: PSet optional
                        criteria: require exactly one

        labels must match this wildcard pattern: *
                        type: PSet optional
                        criteria: require at least one
                        (see Section 1.1.13.1)

        labels must match this wildcard pattern: *
                        type: VPSet optional
                        criteria: require exactly one

        labels must match this wildcard pattern: *
                        type: VPSet optional
                        criteria: require at least one
                        (see Section 1.1.13.2)

    Section 1.1.13.1 description of PSet matching wildcard:

        Drinks
                        type: uint32 
                        default: 5

    Section 1.1.13.2 description used to validate all PSets which are in the VPSet matching the wildcard:

        Drinks
                        type: uint32 
                        default: 5

        Drinks2
                        type: uint32 
                        default: 11

    Section 1.1.14 switchPset PSet description:

        iswitch (switch)
                        type: int32 
                        see Section 1.1.14.1
                        Comment for a ParameterSwitch

        addTeVRefits (switch)
                        type: bool 
                        see Section 1.1.14.2
                        If TeV refits are added, their sources need to be 
                        specified

    Section 1.1.14.1 iswitch (switch):
    The value of "iswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        iswitch
                        type: int32 
                        default: 1

        if iswitch = 0
        ivalue
                        type: vint32 
                        default: (vector size = 2)
                          [0]: 21
                          [1]: 22

        if iswitch = 1
        AND group:
                        see Section 1.1.14.1.1

        if iswitch = 2
        ivalue
                        type: string 
                        default: '102'

    Section 1.1.14.1.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ivalue1
                        type: double 
                        default: 101

        ivalue2
                        type: double 
                        default: 101

    Section 1.1.14.2 addTeVRefits (switch):
    The value of "addTeVRefits" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        addTeVRefits
                        type: bool 
                        default: True

        if addTeVRefits = False
        Empty group description

        if addTeVRefits = True
        AND group:
                        see Section 1.1.14.2.1

    Section 1.1.14.2.1 AND group description:
    This AND group requires all of the following to be in the PSet

        pickySrc
                        type: InputTag 
                        default: ''

        tpfmsSrc
                        type: InputTag 
                        default: ''

    Section 1.1.15 xorPset PSet description:

        XOR group:
                        see Section 1.1.15.1

        XOR group:
                        see Section 1.1.15.2

        XOR group:
                        optional (do not write to cfi)
                        see Section 1.1.15.3

        XOR group:
                        see Section 1.1.15.4

    Section 1.1.15.1 XOR group description:
    This XOR group requires exactly one of the following to be in the PSet

        name
                        type: string 
                        default: '11'

        name
                        type: uint32 
                        default: 11

    Section 1.1.15.2 XOR group description:
    This XOR group requires exactly one of the following to be in the PSet

        name1
                        type: string 
                        default: '11'

        name1
                        type: uint32 
                        default: 11

    Section 1.1.15.3 XOR group description:
    This optional XOR group requires exactly one or none of the following to be in the PSet

        name2
                        type: string 
                        default: '11'

        name2
                        type: uint32 
                        default: 11

    Section 1.1.15.4 XOR group description:
    This XOR group requires exactly one of the following to be in the PSet

        name3
                        type: string 
                        default: '11'

        name4
                        type: uint32 
                        default: 11

        test101
                        type: PSet 
                        see Section 1.1.15.4.1

        test103
                        type: VPSet 
                        see Section 1.1.15.4.2

    Section 1.1.15.4.1 test101 PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.1.15.4.2 test103 VPSet description:
        All elements will be validated using the PSet description in Section 1.1.15.4.2.1.
        Does not have a default VPSet.

    Section 1.1.15.4.2.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.1.16 orPset PSet description:

        OR group:
                        see Section 1.1.16.1

        OR group:
                        see Section 1.1.16.2

        OR group:
                        optional (do not write to cfi)
                        see Section 1.1.16.3

    Section 1.1.16.1 OR group description:
    This OR group requires at least one of the following to be in the PSet

        x1
                        type: string 
                        default: '11'

        x2
                        type: uint32 
                        default: 11

    Section 1.1.16.2 OR group description:
    This OR group requires at least one of the following to be in the PSet

        y1
                        type: string 
                        default: '11'

        y2
                        type: uint32 
                        default: 11

    Section 1.1.16.3 OR group description:
    This optional OR group requires at least one or none of the following to be in the PSet

        z1
                        type: string 
                        default: '11'

        z2
                        type: uint32 
                        default: 11

        test101
                        type: PSet 
                        see Section 1.1.16.3.1

        test103
                        type: VPSet 
                        see Section 1.1.16.3.2

    Section 1.1.16.3.1 test101 PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.1.16.3.2 test103 VPSet description:
        All elements will be validated using the PSet description in Section 1.1.16.3.2.1.
        Does not have a default VPSet.

    Section 1.1.16.3.2.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.1.17 andPset PSet description:

        AND group:
                        see Section 1.1.17.1

        AND group:
                        see Section 1.1.17.2

        AND group:
                        see Section 1.1.17.3

        AND group:
                        optional (do not write to cfi)
                        see Section 1.1.17.4

        AND group:
                        optional
                        see Section 1.1.17.5

    Section 1.1.17.1 AND group description:
    This AND group requires all of the following to be in the PSet

        x1
                        type: string 
                        default: '11'

        x2
                        type: uint32 
                        default: 11

    Section 1.1.17.2 AND group description:
    This AND group requires all of the following to be in the PSet

        y1
                        type: string 
                        default: '11'

        y2
                        type: uint32 
                        default: 11

    Section 1.1.17.3 AND group description:
    This AND group requires all of the following to be in the PSet

        z1
                        type: string 
                        default: '11'

        z2
                        type: uint32 
                        default: 11

    Section 1.1.17.4 AND group description:
    This optional AND group requires all or none of the following to be in the PSet

        a1
                        type: string 
                        default: '11'

        a2
                        type: uint32 
                        default: 11

    Section 1.1.17.5 AND group description:
    This optional AND group requires all or none of the following to be in the PSet

        b1
                        type: string 
                        default: '11'

        b2
                        type: uint32 
                        default: 11

        b3
                        type: uint32 
                        default: 11

        b4
                        type: uint32 
                        default: 11

        b5
                        type: uint32 
                        default: 11

        b6
                        type: uint32 
                        default: 11

    Section 1.1.18 ifExistsPset PSet description:

        IfExists pair:
                        see Section 1.1.18.1

        IfExists pair:
                        optional (do not write to cfi)
                        see Section 1.1.18.2

        IfExists pair:
                        see Section 1.1.18.3

    Section 1.1.18.1 IfExists pair description:
    If the first parameter exists, then the second is required to exist

        x1
                        type: uint32 
                        default: 11

        x2
                        type: string 
                        default: '11'

    Section 1.1.18.2 optional IfExists pair description:
    If the first parameter exists, then the second is allowed to exist

        y1
                        type: uint32 
                        default: 11

        y2
                        type: string 
                        default: '11'

    Section 1.1.18.3 IfExists pair description:
    If the first parameter exists, then the second is required to exist

        z1
                        type: uint32 
                        default: 11

        z2
                        type: string 
                        default: '11'

    Section 1.1.19 allowedLabelsPset PSet description:

        p_int_opt
                        type: int32 optional
                        default: 0

        testAllowedLabels (list of allowed labels)
                        see Section 1.1.19.1

        testAllowedLabelsUntracked (list of allowed labels)
                        see Section 1.1.19.2

        testOptAllowedLabels (list of allowed labels)
                        optional (do not write to cfi)
                        see Section 1.1.19.3

        testOptAllowedLabelsUntracked (list of allowed labels)
                        optional (do not write to cfi)
                        see Section 1.1.19.4

        testWithSet (list of allowed labels)
                        optional
                        see Section 1.1.19.5

        testWithVectorOfSets (list of allowed labels)
                        optional
                        see Section 1.1.19.6

    Section 1.1.19.1 testAllowedLabels - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testAllowedLabels
                        type: vstring 
                        default: empty

        type of allowed parameters:
                        int32

    Section 1.1.19.2 testAllowedLabelsUntracked - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testAllowedLabelsUntracked
                        type: untracked vstring 
                        default: empty

        type of allowed parameters:
                        untracked uint32

    Section 1.1.19.3 testOptAllowedLabels - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testOptAllowedLabels
                        type: vstring optional
                        default: empty

        type of allowed parameters:
                        int32

    Section 1.1.19.4 testOptAllowedLabelsUntracked - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testOptAllowedLabelsUntracked
                        type: untracked vstring optional
                        default: empty

        type of allowed parameters:
                        untracked uint32

    Section 1.1.19.5 testWithSet - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testWithSet
                        type: untracked vstring optional
                        default: empty

        type of allowed parameters:
                        untracked PSet
                        see Section 1.1.19.5.1

    Section 1.1.19.5.1 PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.1.19.6 testWithVectorOfSets - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testWithVectorOfSets
                        type: untracked vstring optional
                        default: empty

        type of allowed parameters:
                        untracked VPSet
                        see Section 1.1.19.6.1

    Section 1.1.19.6.1 PSet description used to validate all elements of VPSet's:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.1.20 noDefaultPset3 PSet description:

        noDefault1
                        type: int32 optional
                        default: none

        noDefault2
                        type: vint32 optional
                        default: none

        noDefault3
                        type: uint32 optional
                        default: none

        noDefault4
                        type: vuint32 optional
                        default: none

        noDefault5
                        type: int64 optional
                        default: none

        noDefault6
                        type: vint64 optional
                        default: none

        noDefault7
                        type: uint64 optional
                        default: none

        noDefault8
                        type: vuint64 optional
                        default: none

        noDefault9
                        type: double optional
                        default: none

        noDefault10
                        type: vdouble optional
                        default: none

        noDefault11
                        type: bool optional
                        default: none

        noDefault12
                        type: string optional
                        default: none

        noDefault13
                        type: vstring optional
                        default: none

        noDefault14
                        type: EventID optional
                        default: none

        noDefault15
                        type: VEventID optional
                        default: none

        noDefault16
                        type: LuminosityBlockID optional
                        default: none

        noDefault17
                        type: VLuminosityBlockID optional
                        default: none

        noDefault18
                        type: InputTag optional
                        default: none

        noDefault19
                        type: VInputTag optional
                        default: none

        noDefault20
                        type: FileInPath optional
                        default: none

        noDefault21
                        type: LuminosityBlockRange optional
                        default: none

        noDefault22
                        type: VLuminosityBlockRange optional
                        default: none

        noDefault23
                        type: EventRange optional
                        default: none

        noDefault24
                        type: VEventRange optional
                        default: none

    Section 1.1.21 noDefaultPset4 PSet description:

        noDefault1
                        type: untracked int32 optional
                        default: none

        noDefault2
                        type: untracked vint32 optional
                        default: none

        noDefault3
                        type: untracked uint32 optional
                        default: none

        noDefault4
                        type: untracked vuint32 optional
                        default: none

        noDefault5
                        type: untracked int64 optional
                        default: none

        noDefault6
                        type: untracked vint64 optional
                        default: none

        noDefault7
                        type: untracked uint64 optional
                        default: none

        noDefault8
                        type: untracked vuint64 optional
                        default: none

        noDefault9
                        type: untracked double optional
                        default: none

        noDefault10
                        type: untracked vdouble optional
                        default: none

        noDefault11
                        type: untracked bool optional
                        default: none

        noDefault12
                        type: untracked string optional
                        default: none

        noDefault13
                        type: untracked vstring optional
                        default: none

        noDefault14
                        type: untracked EventID optional
                        default: none

        noDefault15
                        type: untracked VEventID optional
                        default: none

        noDefault16
                        type: untracked LuminosityBlockID optional
                        default: none

        noDefault17
                        type: untracked VLuminosityBlockID optional
                        default: none

        noDefault18
                        type: untracked InputTag optional
                        default: none

        noDefault19
                        type: untracked VInputTag optional
                        default: none

        noDefault20
                        type: untracked FileInPath optional
                        default: none

        noDefault21
                        type: untracked LuminosityBlockRange optional
                        default: none

        noDefault22
                        type: untracked VLuminosityBlockRange optional
                        default: none

        noDefault23
                        type: untracked EventRange optional
                        default: none

        noDefault24
                        type: untracked VEventRange optional
                        default: none

    Section 1.1.22 plugin PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.1.22.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.1.22.1.1

        type
                        type: string 
                        default: 'edmtestAnotherValueMaker'

    Section 1.1.22.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.1.22)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.1.22.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: 'edmtestAnotherValueMaker'

    Section 1.1.22.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: 'edmtestAnotherValueMaker'

    Section 1.1.23 plugin1 PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.1.23.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.1.23.1.1

        type
                        type: string 
                        default: none

    Section 1.1.23.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.1.23)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.1.23.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: none

    Section 1.1.23.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: none

    Section 1.1.24 plugin2 VPSet description:
        All elements will be validated using the PSet description in Section 1.1.24.1.
        The default VPSet is empty.

    Section 1.1.24.1 description of PSet used to validate elements of VPSet:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.1.24.1.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.1.24.1.1.1

        type
                        type: string 
                        default: none

    Section 1.1.24.1.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.1.24.1)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.1.24.1.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: none

    Section 1.1.24.1.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: none

    Section 1.1.25 plugin3 VPSet description:
        All elements will be validated using the PSet description in Section 1.1.25.1.
        The default VPSet has 2 elements.
        [0]: see Section 1.1.25.2
        [1]: see Section 1.1.25.3

    Section 1.1.25.1 description of PSet used to validate elements of VPSet:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.1.25.1.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.1.25.1.1.1

        type
                        type: string 
                        default: none

    Section 1.1.25.1.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.1.25.1)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.1.25.1.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: none

    Section 1.1.25.1.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: none

    Section 1.1.25.2 PSet description of default VPSet element [0]

        type
                        type: string 
                        default: 'edmtestAnotherOneMaker'

    Section 1.1.25.3 PSet description of default VPSet element [1]

        type
                        type: string 
                        default: 'edmtestAnotherValueMaker'

        value
                        type: int32 
                        default: 11

    Section 1.1.26 plugin4 PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.1.26.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.1.26.1.1

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.1.26.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.1.26)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.1.26.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.1.26.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.1.27 plugin5 VPSet description:
        All elements will be validated using the PSet description in Section 1.1.27.1.
        The default VPSet has 2 elements.
        [0]: see Section 1.1.27.2
        [1]: see Section 1.1.27.3

    Section 1.1.27.1 description of PSet used to validate elements of VPSet:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.1.27.1.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.1.27.1.1.1

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.1.27.1.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.1.27.1)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.1.27.1.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.1.27.1.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.1.27.2 PSet description of default VPSet element [0]

        type
                        type: string 
                        default: 'edmtestAnotherOneMaker'

    Section 1.1.27.3 PSet description of default VPSet element [1]

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

        value
                        type: int32 
                        default: 11

  1.2 module label: testLabel1
  A comment for a ParameterSetDescription

    Description allows anything. If the configured PSet contains illegal parameters,
    then validation will ignore them instead of throwing an exception.

    testingAutoGeneratedCfi
                        type: untracked bool optional
                        default: True

    p_int
                        type: int32 
                        default: 1
                        A big integer. I am trying to test the wrapping of 
                        comments in the printed output by putting in a long 
                        comment to see if it gets wrapped OK. The comment 
                        should get indented to the second column indent on 
                        every line. By default newlines should be inserted 
                        between words to make the lines fit in the terminal 
                        screen width. There is a command line parameter that 
                        can be set to override this width to any desired value. 
                        If there is no terminal then it should default to 80. 
                        The logic for setting the width is in edmPluginHelp.cpp

    p_int_untracked
                        type: untracked int32 
                        default: -2147483647

    p_int_opt
                        type: int32 optional
                        default: 0

    p_int_optuntracked
                        type: untracked int32 optional
                        default: 7

    p_int_opt_nd
                        type: int32 optional
                        default: none

    p_int_optuntracked_nd
                        type: untracked int32 optional
                        default: none

    vint1
                        type: vint32 
                        default: empty

    vint2
                        type: vint32 
                        default: (vector size = 1)
                          [0]: 2147483647

    vint3
                        type: vint32 
                        default: (vector size = 2)
                          [0]: 2147483647
                          [1]: -2147483647

    vint4
                        type: vint32 
                        default: (vector size = 3)
                          [0]: 2147483647
                          [1]: -2147483647
                          [2]: 0

    uint1
                        type: uint32 
                        default: 4294967295

    uint2
                        type: untracked uint32 
                        default: 0

    vuint1
                        type: vuint32 
                        default: empty

    vuint2
                        type: vuint32 
                        default: (vector size = 1)
                          [0]: 4294967295

    vuint3
                        type: vuint32 
                        default: (vector size = 2)
                          [0]: 4294967295
                          [1]: 0

    vuint4
                        type: vuint32 
                        default: (vector size = 3)
                          [0]: 4294967295
                          [1]: 0
                          [2]: 11

    vuint5
                        type: vuint32 
                        default: see Section 1.2.1

    int64v1
                        type: int64 
                        default: 9000000000000000000

    int64v2
                        type: int64 
                        default: -9000000000000000000

    int64v3
                        type: int64 
                        default: 0

    vint64v1
                        type: vint64 
                        default: empty

    vint64v2
                        type: vint64 
                        default: (vector size = 1)
                          [0]: 9000000000000000000

    vint64v3
                        type: vint64 
                        default: (vector size = 2)
                          [0]: 9000000000000000000
                          [1]: -9000000000000000000

    vint64v4
                        type: vint64 
                        default: (vector size = 3)
                          [0]: 9000000000000000000
                          [1]: -9000000000000000000
                          [2]: 0

    uint64v1
                        type: uint64 
                        default: 18000000000000000000

    uint64v2
                        type: untracked uint64 
                        default: 0

    vuint64v1
                        type: vuint64 
                        default: empty

    vuint64v2
                        type: vuint64 
                        default: (vector size = 1)
                          [0]: 18000000000000000000

    vuint64v3
                        type: vuint64 
                        default: (vector size = 2)
                          [0]: 18000000000000000000
                          [1]: 0

    vuint64v4
                        type: vuint64 
                        default: (vector size = 3)
                          [0]: 18000000000000000000
                          [1]: 0
                          [2]: 11

    doublev1
                        type: double 
                        default: 2.2250738585072014e-308

    doublev2
                        type: untracked double 
                        default: 0

    doublev3
                        type: untracked double 
                        default: 0.3

    vdoublev1
                        type: vdouble 
                        default: empty

    vdoublev2
                        type: vdouble 
                        default: (vector size = 1)
                          [0]: 1e+300

    vdoublev3
                        type: vdouble 
                        default: (vector size = 2)
                          [0]: 1e+300
                          [1]: 0

    vdoublev4
                        type: vdouble 
                        default: (vector size = 3)
                          [0]: 1e+300
                          [1]: 0
                          [2]: 11

    vdoublev5
                        type: vdouble 
                        default: (vector size = 4)
                          [0]: 1e+300
                          [1]: 0
                          [2]: 11
                          [3]: 0.3

    boolv1
                        type: bool 
                        default: True

    boolv2
                        type: bool 
                        default: False

    stringv1
                        type: string 
                        default: 'Hello'

    stringv2
                        type: string 
                        default: ''

    vstringv1
                        type: vstring 
                        default: empty

    vstringv2
                        type: vstring 
                        default: (vector size = 1)
                          [0]: 'Hello'

    vstringv3
                        type: vstring 
                        default: (vector size = 2)
                          [0]: 'Hello'
                          [1]: 'World'

    vstringv4
                        type: vstring 
                        default: (vector size = 3)
                          [0]: 'Hello'
                          [1]: 'World'
                          [2]: ''

    eventIDv1
                        type: EventID 
                        default: 11:12

    eventIDv2
                        type: EventID 
                        default: 101:102

    vEventIDv1
                        type: VEventID 
                        default: empty

    vEventIDv2
                        type: VEventID 
                        default: (vector size = 1)
                          [0]: 1000:1100

    vEventIDv3
                        type: VEventID 
                        default: (vector size = 2)
                          [0]: 1000:1100
                          [1]: 10000:11000

    vEventIDv4
                        type: VEventID 
                        default: (vector size = 3)
                          [0]: 1000:1100
                          [1]: 10000:11000
                          [2]: 100000:110000

    luminosityIDv1
                        type: LuminosityBlockID 
                        default: 11:12

    luminosityIDv2
                        type: LuminosityBlockID 
                        default: 101:102

    vLuminosityBlockIDv1
                        type: VLuminosityBlockID 
                        default: empty

    vLuminosityBlockIDv2
                        type: VLuminosityBlockID 
                        default: (vector size = 1)
                          [0]: 1000:1100

    vLuminosityBlockIDv3
                        type: VLuminosityBlockID 
                        default: (vector size = 2)
                          [0]: 1000:1100
                          [1]: 10000:11000

    vLuminosityBlockIDv4
                        type: VLuminosityBlockID 
                        default: (vector size = 3)
                          [0]: 1000:1100
                          [1]: 10000:11000
                          [2]: 100000:110000

    lumiRangev1
                        type: LuminosityBlockRange 
                        default: 1:1-9:9

    lumiRangev2
                        type: LuminosityBlockRange 
                        default: 3:4-1000:1000

    vLumiRangev1
                        type: VLuminosityBlockRange 
                        default: empty

    vLumiRangev2
                        type: VLuminosityBlockRange 
                        default: (vector size = 1)
                          [0]: 1:1-9:9

    vLumiRangev3
                        type: VLuminosityBlockRange 
                        default: (vector size = 2)
                          [0]: 1:1-9:9
                          [1]: 3:4-1000:1000

    eventRangev1
                        type: EventRange 
                        default: 1:1-8:8

    eventRangev2
                        type: EventRange 
                        default: 3:4-1001:1002

    vEventRangev1
                        type: VEventRange 
                        default: empty

    vEventRangev2
                        type: VEventRange 
                        default: (vector size = 1)
                          [0]: 1:1-8:8

    vEventRangev3
                        type: VEventRange 
                        default: (vector size = 2)
                          [0]: 1:1-8:8
                          [1]: 3:4-1001:1002

    inputTagv1
                        type: InputTag 
                        default: 'One:Two:Three'

    inputTagv2
                        type: InputTag 
                        default: 'One:Two'

    inputTagv3
                        type: InputTag 
                        default: 'One'

    inputTagv4
                        type: InputTag 
                        default: 'One::Three'

    vInputTagv1
                        type: VInputTag 
                        default: empty

    vInputTagv2
                        type: VInputTag 
                        default: (vector size = 1)
                          [0]: 'One:Two:Three'

    vInputTagv3
                        type: VInputTag 
                        default: (vector size = 2)
                          [0]: 'One:Two:Three'
                          [1]: 'One:Two'

    vInputTagv4
                        type: VInputTag 
                        default: (vector size = 3)
                          [0]: 'One:Two:Three'
                          [1]: 'One:Two'
                          [2]: 'One'

    vInputTagv5
                        type: VInputTag 
                        default: (vector size = 4)
                          [0]: 'One:Two:Three'
                          [1]: 'One:Two'
                          [2]: 'One'
                          [3]: 'One::Three'

    esinputTagv1
                        type: ESInputTag 
                        default: 'One:Two'

    esinputTagv2
                        type: ESInputTag 
                        default: 'One:'

    esinputTagv3
                        type: ESInputTag 
                        default: ':Two'

    vESInputTagv1
                        type: VESInputTag 
                        default: empty

    vESInputTagv2
                        type: VESInputTag 
                        default: (vector size = 1)
                          [0]: 'One:Two'

    vESInputTagv3
                        type: VESInputTag 
                        default: (vector size = 2)
                          [0]: 'One:Two'
                          [1]: 'One:'

    vESInputTagv4
                        type: VESInputTag 
                        default: (vector size = 3)
                          [0]: 'One:Two'
                          [1]: 'One:'
                          [2]: ':Two'

    fileInPath
                        type: FileInPath 
                        default: 'FWCore/Integration/plugins/ProducerWithPSetDesc.cc'

    Empty group description

    bar
                        type: PSet 
                        see Section 1.2.2

    test101
                        type: PSet optional
                        see Section 1.2.3 (do not write to cfi)

    test102
                        type: VPSet optional
                        see Section 1.2.4 (do not write to cfi)

    test103
                        type: VPSet optional
                        see Section 1.2.5 (do not write to cfi)

    test104
                        type: untracked VPSet 
                        see Section 1.2.6

    test105
                        type: untracked VPSet 
                        see Section 1.2.7

    test1
                        type: double 
                        default: 0.1

    test2
                        type: double optional
                        default: 0.2

    test3
                        type: double optional
                        default: none (do not write to cfi)

    AND group:
                        optional
                        see Section 1.2.8

    oiswitch (switch)
                        type: int32 optional
                        see Section 1.2.9

    testDeeplyNested2
                        type: PSet 
                        see Section 1.2.10

    bars
                        type: VPSet 
                        see Section 1.2.11

    subpset
                        type: PSet optional
                        see Section 1.2.12

    wildcardPset
                        type: PSet 
                        see Section 1.2.13

    switchPset
                        type: PSet 
                        see Section 1.2.14

    xorPset
                        type: PSet 
                        see Section 1.2.15

    orPset
                        type: PSet 
                        see Section 1.2.16

    andPset
                        type: PSet 
                        see Section 1.2.17

    ifExistsPset
                        type: PSet 
                        see Section 1.2.18

    allowedLabelsPset
                        type: PSet 
                        see Section 1.2.19

    noDefaultPset3
                        type: PSet 
                        see Section 1.2.20

    noDefaultPset4
                        type: PSet 
                        see Section 1.2.21

    plugin
                        type: PSet 
                        see Section 1.2.22

    plugin1
                        type: PSet 
                        see Section 1.2.23

    plugin2
                        type: VPSet 
                        see Section 1.2.24

    plugin3
                        type: VPSet 
                        see Section 1.2.25

    plugin4
                        type: PSet 
                        see Section 1.2.26

    plugin5
                        type: VPSet 
                        see Section 1.2.27

    noDefaultPset1
                        type: PSet 
                        see Section 1.2.28

    noDefaultPset2
                        type: PSet 
                        see Section 1.2.29

    mightGet
                        type: untracked vstring optional
                        default: none
                        List contains the branch names for the EDProducts which 
                        might be requested by the module.
                        The format for identifying the EDProduct is the same as 
                        the one used for OutputModules, except no wild cards 
                        are allowed. E.g.
                        Foos_foomodule_whichFoo_RECO

    Section 1.2.1 vuint5 default contents: (vector size = 6)
        [0]: 4294967295
        [1]: 0
        [2]: 11
        [3]: 21
        [4]: 31
        [5]: 41

    Section 1.2.2 bar PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.2.3 test101 PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.2.4 test102 VPSet description:
        All elements will be validated using the PSet description in Section 1.2.4.1.
        Does not have a default VPSet.

    Section 1.2.4.1 description of PSet used to validate elements of VPSet:

        Description is empty

    Section 1.2.5 test103 VPSet description:
        All elements will be validated using the PSet description in Section 1.2.5.1.
        Does not have a default VPSet.

    Section 1.2.5.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.2.6 test104 VPSet description:
        All elements will be validated using the PSet description in Section 1.2.6.1.
        The default VPSet has 1 element.
        [0]: see Section 1.2.6.2

    Section 1.2.6.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.2.6.2 PSet description of default VPSet element [0]

        Description is empty

    Section 1.2.7 test105 VPSet description:
        All elements will be validated using the PSet description in Section 1.2.7.1.
        The default VPSet is empty.

    Section 1.2.7.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.2.8 AND group description:
    This optional AND group requires all or none of the following to be in the PSet

        testA
                        type: string 
                        default: 'fooA'

        testB
                        type: int32 
                        default: 100

        testC
                        type: int32 
                        default: 101

    Section 1.2.9 oiswitch (switch):
    The value of "oiswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        oiswitch
                        type: int32 optional
                        default: 1

        if oiswitch = 0
        oivalue
                        type: int32 
                        default: 100

        if oiswitch = 1
        AND group:
                        see Section 1.2.9.1

        if oiswitch = 2
        oivalue
                        type: string 
                        default: '102'

    Section 1.2.9.1 AND group description:
    This AND group requires all of the following to be in the PSet

        oivalue1
                        type: double 
                        default: 101

        oivalue2
                        type: double 
                        default: 101

    Section 1.2.10 testDeeplyNested2 PSet description:

        bswitch (switch)
                        type: bool 
                        see Section 1.2.10.1

        iswitch (switch)
                        type: int32 
                        see Section 1.2.10.2

        sswitch (switch)
                        type: string 
                        see Section 1.2.10.3

        ndiswitch (switch)
                        type: int32 optional (do not write to cfi)
                        see Section 1.2.10.4

        testint
                        type: int32 
                        default: 1000

    Section 1.2.10.1 bswitch (switch):
    The value of "bswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        bswitch
                        type: bool 
                        default: False

        if bswitch = False
        AND group:
                        see Section 1.2.10.1.1

        if bswitch = True
        bvalue
                        type: int32 
                        default: 100

    Section 1.2.10.1.1 AND group description:
    This AND group requires all of the following to be in the PSet

        bvalue1
                        type: double 
                        default: 101

        bvalue2
                        type: double 
                        default: 101

    Section 1.2.10.2 iswitch (switch):
    The value of "iswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        iswitch
                        type: int32 
                        default: 1

        if iswitch = 0
        ivalue
                        type: int32 
                        default: 100

        if iswitch = 1
        AND group:
                        see Section 1.2.10.2.1

        if iswitch = 2
        ivalue
                        type: string 
                        default: '102'

    Section 1.2.10.2.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ivalue1
                        type: double 
                        default: 101

        ivalue2
                        type: untracked double 
                        default: 101

    Section 1.2.10.3 sswitch (switch):
    The value of "sswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        sswitch
                        type: string 
                        default: '1'

        if sswitch = "0"
        svalue
                        type: int32 
                        default: 100

        if sswitch = "1"
        AND group:
                        see Section 1.2.10.3.1

        if sswitch = "2"
        svalue
                        type: string 
                        default: '102'

    Section 1.2.10.3.1 AND group description:
    This AND group requires all of the following to be in the PSet

        svalue1
                        type: double 
                        default: 101

        svalue2
                        type: double 
                        default: 101

    Section 1.2.10.4 ndiswitch (switch):
    The value of "ndiswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        ndiswitch
                        type: int32 optional
                        default: 1

        if ndiswitch = 0
        ndivalue
                        type: int32 
                        default: 100

        if ndiswitch = 1
        AND group:
                        see Section 1.2.10.4.1

        if ndiswitch = 2
        ndivalue
                        type: string 
                        default: '102'

    Section 1.2.10.4.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ndivalue1
                        type: double 
                        default: 101

        ndivalue2
                        type: double 
                        default: 101

    Section 1.2.11 bars VPSet description:
        All elements will be validated using the PSet description in Section 1.2.11.1.
        The default VPSet has 2 elements.
        [0]: see Section 1.2.11.2
        [1]: see Section 1.2.11.3

    Section 1.2.11.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

        testDeeplyNested
                        type: PSet 
                        see Section 1.2.11.1.1

        anotherVPSet
                        type: VPSet 
                        see Section 1.2.11.1.2

    Section 1.2.11.1.1 testDeeplyNested PSet description:

        bswitch (switch)
                        type: bool 
                        see Section 1.2.11.1.1.1

        iswitch (switch)
                        type: int32 
                        see Section 1.2.11.1.1.2

        sswitch (switch)
                        type: string 
                        see Section 1.2.11.1.1.3

        ndiswitch (switch)
                        type: int32 optional (do not write to cfi)
                        see Section 1.2.11.1.1.4

        testint
                        type: int32 
                        default: 1000

    Section 1.2.11.1.1.1 bswitch (switch):
    The value of "bswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        bswitch
                        type: bool 
                        default: False

        if bswitch = False
        AND group:
                        see Section 1.2.11.1.1.1.1

        if bswitch = True
        bvalue
                        type: int32 
                        default: 100

    Section 1.2.11.1.1.1.1 AND group description:
    This AND group requires all of the following to be in the PSet

        bvalue1
                        type: double 
                        default: 101

        bvalue2
                        type: double 
                        default: 101

    Section 1.2.11.1.1.2 iswitch (switch):
    The value of "iswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        iswitch
                        type: int32 
                        default: 1

        if iswitch = 0
        ivalue
                        type: int32 
                        default: 100

        if iswitch = 1
        AND group:
                        see Section 1.2.11.1.1.2.1

        if iswitch = 2
        ivalue
                        type: string 
                        default: '102'

    Section 1.2.11.1.1.2.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ivalue1
                        type: double 
                        default: 101

        ivalue2
                        type: untracked double 
                        default: 101

    Section 1.2.11.1.1.3 sswitch (switch):
    The value of "sswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        sswitch
                        type: string 
                        default: '1'

        if sswitch = "0"
        svalue
                        type: int32 
                        default: 100

        if sswitch = "1"
        AND group:
                        see Section 1.2.11.1.1.3.1

        if sswitch = "2"
        svalue
                        type: string 
                        default: '102'

    Section 1.2.11.1.1.3.1 AND group description:
    This AND group requires all of the following to be in the PSet

        svalue1
                        type: double 
                        default: 101

        svalue2
                        type: double 
                        default: 101

    Section 1.2.11.1.1.4 ndiswitch (switch):
    The value of "ndiswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        ndiswitch
                        type: int32 optional
                        default: 1

        if ndiswitch = 0
        ndivalue
                        type: int32 
                        default: 100

        if ndiswitch = 1
        AND group:
                        see Section 1.2.11.1.1.4.1

        if ndiswitch = 2
        ndivalue
                        type: string 
                        default: '102'

    Section 1.2.11.1.1.4.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ndivalue1
                        type: double 
                        default: 101

        ndivalue2
                        type: double 
                        default: 101

    Section 1.2.11.1.2 anotherVPSet VPSet description:
        All elements will be validated using the PSet description in Section 1.2.11.1.2.1.
        The default VPSet has 2 elements.
        [0]: see Section 1.2.11.1.2.2
        [1]: see Section 1.2.11.1.2.3

    Section 1.2.11.1.2.1 description of PSet used to validate elements of VPSet:

        xvalue
                        type: int32 
                        default: 7

    Section 1.2.11.1.2.2 PSet description of default VPSet element [0]

        Description is empty

    Section 1.2.11.1.2.3 PSet description of default VPSet element [1]

        xvalue
                        type: int32 
                        default: 100

    Section 1.2.11.2 PSet description of default VPSet element [0]

        oDrinks
                        type: uint32 
                        default: 11

    Section 1.2.11.3 PSet description of default VPSet element [1]

        ndouDrinks
                        type: untracked uint32 
                        default: 11

        oDrinks
                        type: uint32 
                        default: 11

        ouDrinks
                        type: untracked uint32 
                        default: 11

        testDeeplyNested
                        type: PSet 
                        see Section 1.2.11.3.1

        anotherVPSet
                        type: VPSet 
                        see Section 1.2.11.3.2

    Section 1.2.11.3.1 testDeeplyNested PSet description:

        testint
                        type: int32 
                        default: 2

    Section 1.2.11.3.2  VPSet description for VPSet that is part of the default of a containing VPSet:
        The default VPSet has 2 elements.
        [0]: see Section 1.2.11.3.2.1
        [1]: see Section 1.2.11.3.2.2

    Section 1.2.11.3.2.1 PSet description of default VPSet element [0]

        Description is empty

    Section 1.2.11.3.2.2 PSet description of default VPSet element [1]

        xvalue
                        type: int32 
                        default: 17

    Section 1.2.12 subpset PSet description:

        xvalue
                        type: int32 
                        default: 11

        bar
                        type: untracked PSet 
                        see Section 1.2.12.1

    Section 1.2.12.1 bar PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.2.13 wildcardPset PSet description:

        p_uint_opt
                        type: uint32 optional
                        default: 0

        labels must match this wildcard pattern: *
                        type: int32 optional
                        criteria: require zero or more

        labels must match this wildcard pattern: *
                        type: untracked double optional
                        criteria: require zero or more
                        A comment for a wildcard parameter

        labels must match this wildcard pattern: *
                        type: PSet optional
                        criteria: require exactly one

        labels must match this wildcard pattern: *
                        type: PSet optional
                        criteria: require at least one
                        (see Section 1.2.13.1)

        labels must match this wildcard pattern: *
                        type: VPSet optional
                        criteria: require exactly one

        labels must match this wildcard pattern: *
                        type: VPSet optional
                        criteria: require at least one
                        (see Section 1.2.13.2)

    Section 1.2.13.1 description of PSet matching wildcard:

        Drinks
                        type: uint32 
                        default: 5

    Section 1.2.13.2 description used to validate all PSets which are in the VPSet matching the wildcard:

        Drinks
                        type: uint32 
                        default: 5

        Drinks2
                        type: uint32 
                        default: 11

    Section 1.2.14 switchPset PSet description:

        iswitch (switch)
                        type: int32 
                        see Section 1.2.14.1
                        Comment for a ParameterSwitch

        addTeVRefits (switch)
                        type: bool 
                        see Section 1.2.14.2
                        If TeV refits are added, their sources need to be 
                        specified

    Section 1.2.14.1 iswitch (switch):
    The value of "iswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        iswitch
                        type: int32 
                        default: 1

        if iswitch = 0
        ivalue
                        type: vint32 
                        default: (vector size = 2)
                          [0]: 21
                          [1]: 22

        if iswitch = 1
        AND group:
                        see Section 1.2.14.1.1

        if iswitch = 2
        ivalue
                        type: string 
                        default: '102'

    Section 1.2.14.1.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ivalue1
                        type: double 
                        default: 101

        ivalue2
                        type: double 
                        default: 101

    Section 1.2.14.2 addTeVRefits (switch):
    The value of "addTeVRefits" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        addTeVRefits
                        type: bool 
                        default: True

        if addTeVRefits = False
        Empty group description

        if addTeVRefits = True
        AND group:
                        see Section 1.2.14.2.1

    Section 1.2.14.2.1 AND group description:
    This AND group requires all of the following to be in the PSet

        pickySrc
                        type: InputTag 
                        default: ''

        tpfmsSrc
                        type: InputTag 
                        default: ''

    Section 1.2.15 xorPset PSet description:

        XOR group:
                        see Section 1.2.15.1

        XOR group:
                        see Section 1.2.15.2

        XOR group:
                        optional (do not write to cfi)
                        see Section 1.2.15.3

        XOR group:
                        see Section 1.2.15.4

    Section 1.2.15.1 XOR group description:
    This XOR group requires exactly one of the following to be in the PSet

        name
                        type: string 
                        default: '11'

        name
                        type: uint32 
                        default: 11

    Section 1.2.15.2 XOR group description:
    This XOR group requires exactly one of the following to be in the PSet

        name1
                        type: string 
                        default: '11'

        name1
                        type: uint32 
                        default: 11

    Section 1.2.15.3 XOR group description:
    This optional XOR group requires exactly one or none of the following to be in the PSet

        name2
                        type: string 
                        default: '11'

        name2
                        type: uint32 
                        default: 11

    Section 1.2.15.4 XOR group description:
    This XOR group requires exactly one of the following to be in the PSet

        name3
                        type: string 
                        default: '11'

        name4
                        type: uint32 
                        default: 11

        test101
                        type: PSet 
                        see Section 1.2.15.4.1

        test103
                        type: VPSet 
                        see Section 1.2.15.4.2

    Section 1.2.15.4.1 test101 PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.2.15.4.2 test103 VPSet description:
        All elements will be validated using the PSet description in Section 1.2.15.4.2.1.
        Does not have a default VPSet.

    Section 1.2.15.4.2.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.2.16 orPset PSet description:

        OR group:
                        see Section 1.2.16.1

        OR group:
                        see Section 1.2.16.2

        OR group:
                        optional (do not write to cfi)
                        see Section 1.2.16.3

    Section 1.2.16.1 OR group description:
    This OR group requires at least one of the following to be in the PSet

        x1
                        type: string 
                        default: '11'

        x2
                        type: uint32 
                        default: 11

    Section 1.2.16.2 OR group description:
    This OR group requires at least one of the following to be in the PSet

        y1
                        type: string 
                        default: '11'

        y2
                        type: uint32 
                        default: 11

    Section 1.2.16.3 OR group description:
    This optional OR group requires at least one or none of the following to be in the PSet

        z1
                        type: string 
                        default: '11'

        z2
                        type: uint32 
                        default: 11

        test101
                        type: PSet 
                        see Section 1.2.16.3.1

        test103
                        type: VPSet 
                        see Section 1.2.16.3.2

    Section 1.2.16.3.1 test101 PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.2.16.3.2 test103 VPSet description:
        All elements will be validated using the PSet description in Section 1.2.16.3.2.1.
        Does not have a default VPSet.

    Section 1.2.16.3.2.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.2.17 andPset PSet description:

        AND group:
                        see Section 1.2.17.1

        AND group:
                        see Section 1.2.17.2

        AND group:
                        see Section 1.2.17.3

        AND group:
                        optional (do not write to cfi)
                        see Section 1.2.17.4

        AND group:
                        optional
                        see Section 1.2.17.5

    Section 1.2.17.1 AND group description:
    This AND group requires all of the following to be in the PSet

        x1
                        type: string 
                        default: '11'

        x2
                        type: uint32 
                        default: 11

    Section 1.2.17.2 AND group description:
    This AND group requires all of the following to be in the PSet

        y1
                        type: string 
                        default: '11'

        y2
                        type: uint32 
                        default: 11

    Section 1.2.17.3 AND group description:
    This AND group requires all of the following to be in the PSet

        z1
                        type: string 
                        default: '11'

        z2
                        type: uint32 
                        default: 11

    Section 1.2.17.4 AND group description:
    This optional AND group requires all or none of the following to be in the PSet

        a1
                        type: string 
                        default: '11'

        a2
                        type: uint32 
                        default: 11

    Section 1.2.17.5 AND group description:
    This optional AND group requires all or none of the following to be in the PSet

        b1
                        type: string 
                        default: '11'

        b2
                        type: uint32 
                        default: 11

        b3
                        type: uint32 
                        default: 11

        b4
                        type: uint32 
                        default: 11

        b5
                        type: uint32 
                        default: 11

        b6
                        type: uint32 
                        default: 11

    Section 1.2.18 ifExistsPset PSet description:

        IfExists pair:
                        see Section 1.2.18.1

        IfExists pair:
                        optional (do not write to cfi)
                        see Section 1.2.18.2

        IfExists pair:
                        see Section 1.2.18.3

    Section 1.2.18.1 IfExists pair description:
    If the first parameter exists, then the second is required to exist

        x1
                        type: uint32 
                        default: 11

        x2
                        type: string 
                        default: '11'

    Section 1.2.18.2 optional IfExists pair description:
    If the first parameter exists, then the second is allowed to exist

        y1
                        type: uint32 
                        default: 11

        y2
                        type: string 
                        default: '11'

    Section 1.2.18.3 IfExists pair description:
    If the first parameter exists, then the second is required to exist

        z1
                        type: uint32 
                        default: 11

        z2
                        type: string 
                        default: '11'

    Section 1.2.19 allowedLabelsPset PSet description:

        p_int_opt
                        type: int32 optional
                        default: 0

        testAllowedLabels (list of allowed labels)
                        see Section 1.2.19.1

        testAllowedLabelsUntracked (list of allowed labels)
                        see Section 1.2.19.2

        testOptAllowedLabels (list of allowed labels)
                        optional (do not write to cfi)
                        see Section 1.2.19.3

        testOptAllowedLabelsUntracked (list of allowed labels)
                        optional (do not write to cfi)
                        see Section 1.2.19.4

        testWithSet (list of allowed labels)
                        optional
                        see Section 1.2.19.5

        testWithVectorOfSets (list of allowed labels)
                        optional
                        see Section 1.2.19.6

    Section 1.2.19.1 testAllowedLabels - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testAllowedLabels
                        type: vstring 
                        default: empty

        type of allowed parameters:
                        int32

    Section 1.2.19.2 testAllowedLabelsUntracked - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testAllowedLabelsUntracked
                        type: untracked vstring 
                        default: empty

        type of allowed parameters:
                        untracked uint32

    Section 1.2.19.3 testOptAllowedLabels - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testOptAllowedLabels
                        type: vstring optional
                        default: empty

        type of allowed parameters:
                        int32

    Section 1.2.19.4 testOptAllowedLabelsUntracked - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testOptAllowedLabelsUntracked
                        type: untracked vstring optional
                        default: empty

        type of allowed parameters:
                        untracked uint32

    Section 1.2.19.5 testWithSet - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testWithSet
                        type: untracked vstring optional
                        default: empty

        type of allowed parameters:
                        untracked PSet
                        see Section 1.2.19.5.1

    Section 1.2.19.5.1 PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.2.19.6 testWithVectorOfSets - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testWithVectorOfSets
                        type: untracked vstring optional
                        default: empty

        type of allowed parameters:
                        untracked VPSet
                        see Section 1.2.19.6.1

    Section 1.2.19.6.1 PSet description used to validate all elements of VPSet's:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.2.20 noDefaultPset3 PSet description:

        noDefault1
                        type: int32 optional
                        default: none

        noDefault2
                        type: vint32 optional
                        default: none

        noDefault3
                        type: uint32 optional
                        default: none

        noDefault4
                        type: vuint32 optional
                        default: none

        noDefault5
                        type: int64 optional
                        default: none

        noDefault6
                        type: vint64 optional
                        default: none

        noDefault7
                        type: uint64 optional
                        default: none

        noDefault8
                        type: vuint64 optional
                        default: none

        noDefault9
                        type: double optional
                        default: none

        noDefault10
                        type: vdouble optional
                        default: none

        noDefault11
                        type: bool optional
                        default: none

        noDefault12
                        type: string optional
                        default: none

        noDefault13
                        type: vstring optional
                        default: none

        noDefault14
                        type: EventID optional
                        default: none

        noDefault15
                        type: VEventID optional
                        default: none

        noDefault16
                        type: LuminosityBlockID optional
                        default: none

        noDefault17
                        type: VLuminosityBlockID optional
                        default: none

        noDefault18
                        type: InputTag optional
                        default: none

        noDefault19
                        type: VInputTag optional
                        default: none

        noDefault20
                        type: FileInPath optional
                        default: none

        noDefault21
                        type: LuminosityBlockRange optional
                        default: none

        noDefault22
                        type: VLuminosityBlockRange optional
                        default: none

        noDefault23
                        type: EventRange optional
                        default: none

        noDefault24
                        type: VEventRange optional
                        default: none

    Section 1.2.21 noDefaultPset4 PSet description:

        noDefault1
                        type: untracked int32 optional
                        default: none

        noDefault2
                        type: untracked vint32 optional
                        default: none

        noDefault3
                        type: untracked uint32 optional
                        default: none

        noDefault4
                        type: untracked vuint32 optional
                        default: none

        noDefault5
                        type: untracked int64 optional
                        default: none

        noDefault6
                        type: untracked vint64 optional
                        default: none

        noDefault7
                        type: untracked uint64 optional
                        default: none

        noDefault8
                        type: untracked vuint64 optional
                        default: none

        noDefault9
                        type: untracked double optional
                        default: none

        noDefault10
                        type: untracked vdouble optional
                        default: none

        noDefault11
                        type: untracked bool optional
                        default: none

        noDefault12
                        type: untracked string optional
                        default: none

        noDefault13
                        type: untracked vstring optional
                        default: none

        noDefault14
                        type: untracked EventID optional
                        default: none

        noDefault15
                        type: untracked VEventID optional
                        default: none

        noDefault16
                        type: untracked LuminosityBlockID optional
                        default: none

        noDefault17
                        type: untracked VLuminosityBlockID optional
                        default: none

        noDefault18
                        type: untracked InputTag optional
                        default: none

        noDefault19
                        type: untracked VInputTag optional
                        default: none

        noDefault20
                        type: untracked FileInPath optional
                        default: none

        noDefault21
                        type: untracked LuminosityBlockRange optional
                        default: none

        noDefault22
                        type: untracked VLuminosityBlockRange optional
                        default: none

        noDefault23
                        type: untracked EventRange optional
                        default: none

        noDefault24
                        type: untracked VEventRange optional
                        default: none

    Section 1.2.22 plugin PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.2.22.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.2.22.1.1

        type
                        type: string 
                        default: 'edmtestAnotherValueMaker'

    Section 1.2.22.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.2.22)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.2.22.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: 'edmtestAnotherValueMaker'

    Section 1.2.22.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: 'edmtestAnotherValueMaker'

    Section 1.2.23 plugin1 PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.2.23.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.2.23.1.1

        type
                        type: string 
                        default: none

    Section 1.2.23.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.2.23)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.2.23.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: none

    Section 1.2.23.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: none

    Section 1.2.24 plugin2 VPSet description:
        All elements will be validated using the PSet description in Section 1.2.24.1.
        The default VPSet is empty.

    Section 1.2.24.1 description of PSet used to validate elements of VPSet:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.2.24.1.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.2.24.1.1.1

        type
                        type: string 
                        default: none

    Section 1.2.24.1.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.2.24.1)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.2.24.1.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: none

    Section 1.2.24.1.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: none

    Section 1.2.25 plugin3 VPSet description:
        All elements will be validated using the PSet description in Section 1.2.25.1.
        The default VPSet has 2 elements.
        [0]: see Section 1.2.25.2
        [1]: see Section 1.2.25.3

    Section 1.2.25.1 description of PSet used to validate elements of VPSet:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.2.25.1.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.2.25.1.1.1

        type
                        type: string 
                        default: none

    Section 1.2.25.1.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.2.25.1)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.2.25.1.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: none

    Section 1.2.25.1.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: none

    Section 1.2.25.2 PSet description of default VPSet element [0]

        type
                        type: string 
                        default: 'edmtestAnotherOneMaker'

    Section 1.2.25.3 PSet description of default VPSet element [1]

        type
                        type: string 
                        default: 'edmtestAnotherValueMaker'

        value
                        type: int32 
                        default: 11

    Section 1.2.26 plugin4 PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.2.26.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.2.26.1.1

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.2.26.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.2.26)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.2.26.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.2.26.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.2.27 plugin5 VPSet description:
        All elements will be validated using the PSet description in Section 1.2.27.1.
        The default VPSet has 2 elements.
        [0]: see Section 1.2.27.2
        [1]: see Section 1.2.27.3

    Section 1.2.27.1 description of PSet used to validate elements of VPSet:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.2.27.1.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.2.27.1.1.1

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.2.27.1.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.2.27.1)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.2.27.1.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.2.27.1.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.2.27.2 PSet description of default VPSet element [0]

        type
                        type: string 
                        default: 'edmtestAnotherOneMaker'

    Section 1.2.27.3 PSet description of default VPSet element [1]

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

        value
                        type: int32 
                        default: 11

    Section 1.2.28 noDefaultPset1 PSet description:

        noDefault1
                        type: int32 
                        default: none

        noDefault2
                        type: vint32 
                        default: none

        noDefault3
                        type: uint32 
                        default: none

        noDefault4
                        type: vuint32 
                        default: none

        noDefault5
                        type: int64 
                        default: none

        noDefault6
                        type: vint64 
                        default: none

        noDefault7
                        type: uint64 
                        default: none

        noDefault8
                        type: vuint64 
                        default: none

        noDefault9
                        type: double 
                        default: none

        noDefault10
                        type: vdouble 
                        default: none

        noDefault11
                        type: bool 
                        default: none

        noDefault12
                        type: string 
                        default: none

        noDefault13
                        type: vstring 
                        default: none

        noDefault14
                        type: EventID 
                        default: none

        noDefault15
                        type: VEventID 
                        default: none

        noDefault16
                        type: LuminosityBlockID 
                        default: none

        noDefault17
                        type: VLuminosityBlockID 
                        default: none

        noDefault18
                        type: InputTag 
                        default: none

        noDefault19
                        type: VInputTag 
                        default: none

        noDefault20
                        type: FileInPath 
                        default: none

        noDefault21
                        type: LuminosityBlockRange 
                        default: none

        noDefault22
                        type: VLuminosityBlockRange 
                        default: none

        noDefault23
                        type: EventRange 
                        default: none

        noDefault24
                        type: VEventRange 
                        default: none

    Section 1.2.29 noDefaultPset2 PSet description:

        noDefault1
                        type: untracked int32 
                        default: none

        noDefault2
                        type: untracked vint32 
                        default: none

        noDefault3
                        type: untracked uint32 
                        default: none

        noDefault4
                        type: untracked vuint32 
                        default: none

        noDefault5
                        type: untracked int64 
                        default: none

        noDefault6
                        type: untracked vint64 
                        default: none

        noDefault7
                        type: untracked uint64 
                        default: none

        noDefault8
                        type: untracked vuint64 
                        default: none

        noDefault9
                        type: untracked double 
                        default: none

        noDefault10
                        type: untracked vdouble 
                        default: none

        noDefault11
                        type: untracked bool 
                        default: none

        noDefault12
                        type: untracked string 
                        default: none

        noDefault13
                        type: untracked vstring 
                        default: none

        noDefault14
                        type: untracked EventID 
                        default: none

        noDefault15
                        type: untracked VEventID 
                        default: none

        noDefault16
                        type: untracked LuminosityBlockID 
                        default: none

        noDefault17
                        type: untracked VLuminosityBlockID 
                        default: none

        noDefault18
                        type: untracked InputTag 
                        default: none

        noDefault19
                        type: untracked VInputTag 
                        default: none

        noDefault20
                        type: untracked FileInPath 
                        default: none

        noDefault21
                        type: untracked LuminosityBlockRange 
                        default: none

        noDefault22
                        type: untracked VLuminosityBlockRange 
                        default: none

        noDefault23
                        type: untracked EventRange 
                        default: none

        noDefault24
                        type: untracked VEventRange 
                        default: none

  1.3 module label: producerWithPSetDesc

    testingAutoGeneratedCfi
                        type: untracked bool optional
                        default: True

    p_int
                        type: int32 
                        default: 3
                        A big integer. I am trying to test the wrapping of 
                        comments in the printed output by putting in a long 
                        comment to see if it gets wrapped OK. The comment 
                        should get indented to the second column indent on 
                        every line. By default newlines should be inserted 
                        between words to make the lines fit in the terminal 
                        screen width. There is a command line parameter that 
                        can be set to override this width to any desired value. 
                        If there is no terminal then it should default to 80. 
                        The logic for setting the width is in edmPluginHelp.cpp

    p_int_untracked
                        type: untracked int32 
                        default: -2147483647

    p_int_opt
                        type: int32 optional
                        default: 0

    p_int_optuntracked
                        type: untracked int32 optional
                        default: 7

    p_int_opt_nd
                        type: int32 optional
                        default: none

    p_int_optuntracked_nd
                        type: untracked int32 optional
                        default: none

    vint1
                        type: vint32 
                        default: empty

    vint2
                        type: vint32 
                        default: (vector size = 1)
                          [0]: 2147483647

    vint3
                        type: vint32 
                        default: (vector size = 2)
                          [0]: 2147483647
                          [1]: -2147483647

    vint4
                        type: vint32 
                        default: (vector size = 3)
                          [0]: 2147483647
                          [1]: -2147483647
                          [2]: 0

    uint1
                        type: uint32 
                        default: 4294967295

    uint2
                        type: untracked uint32 
                        default: 0

    vuint1
                        type: vuint32 
                        default: empty

    vuint2
                        type: vuint32 
                        default: (vector size = 1)
                          [0]: 4294967295

    vuint3
                        type: vuint32 
                        default: (vector size = 2)
                          [0]: 4294967295
                          [1]: 0

    vuint4
                        type: vuint32 
                        default: (vector size = 3)
                          [0]: 4294967295
                          [1]: 0
                          [2]: 11

    vuint5
                        type: vuint32 
                        default: see Section 1.3.1

    int64v1
                        type: int64 
                        default: 9000000000000000000

    int64v2
                        type: int64 
                        default: -9000000000000000000

    int64v3
                        type: int64 
                        default: 0

    vint64v1
                        type: vint64 
                        default: empty

    vint64v2
                        type: vint64 
                        default: (vector size = 1)
                          [0]: 9000000000000000000

    vint64v3
                        type: vint64 
                        default: (vector size = 2)
                          [0]: 9000000000000000000
                          [1]: -9000000000000000000

    vint64v4
                        type: vint64 
                        default: (vector size = 3)
                          [0]: 9000000000000000000
                          [1]: -9000000000000000000
                          [2]: 0

    uint64v1
                        type: uint64 
                        default: 18000000000000000000

    uint64v2
                        type: untracked uint64 
                        default: 0

    vuint64v1
                        type: vuint64 
                        default: empty

    vuint64v2
                        type: vuint64 
                        default: (vector size = 1)
                          [0]: 18000000000000000000

    vuint64v3
                        type: vuint64 
                        default: (vector size = 2)
                          [0]: 18000000000000000000
                          [1]: 0

    vuint64v4
                        type: vuint64 
                        default: (vector size = 3)
                          [0]: 18000000000000000000
                          [1]: 0
                          [2]: 11

    doublev1
                        type: double 
                        default: 2.2250738585072014e-308

    doublev2
                        type: untracked double 
                        default: 0

    doublev3
                        type: untracked double 
                        default: 0.3

    vdoublev1
                        type: vdouble 
                        default: empty

    vdoublev2
                        type: vdouble 
                        default: (vector size = 1)
                          [0]: 1e+300

    vdoublev3
                        type: vdouble 
                        default: (vector size = 2)
                          [0]: 1e+300
                          [1]: 0

    vdoublev4
                        type: vdouble 
                        default: (vector size = 3)
                          [0]: 1e+300
                          [1]: 0
                          [2]: 11

    vdoublev5
                        type: vdouble 
                        default: (vector size = 4)
                          [0]: 1e+300
                          [1]: 0
                          [2]: 11
                          [3]: 0.3

    boolv1
                        type: bool 
                        default: True

    boolv2
                        type: bool 
                        default: False

    stringv1
                        type: string 
                        default: 'Hello'

    stringv2
                        type: string 
                        default: ''

    vstringv1
                        type: vstring 
                        default: empty

    vstringv2
                        type: vstring 
                        default: (vector size = 1)
                          [0]: 'Hello'

    vstringv3
                        type: vstring 
                        default: (vector size = 2)
                          [0]: 'Hello'
                          [1]: 'World'

    vstringv4
                        type: vstring 
                        default: (vector size = 3)
                          [0]: 'Hello'
                          [1]: 'World'
                          [2]: ''

    eventIDv1
                        type: EventID 
                        default: 11:12

    eventIDv2
                        type: EventID 
                        default: 101:102

    vEventIDv1
                        type: VEventID 
                        default: empty

    vEventIDv2
                        type: VEventID 
                        default: (vector size = 1)
                          [0]: 1000:1100

    vEventIDv3
                        type: VEventID 
                        default: (vector size = 2)
                          [0]: 1000:1100
                          [1]: 10000:11000

    vEventIDv4
                        type: VEventID 
                        default: (vector size = 3)
                          [0]: 1000:1100
                          [1]: 10000:11000
                          [2]: 100000:110000

    luminosityIDv1
                        type: LuminosityBlockID 
                        default: 11:12

    luminosityIDv2
                        type: LuminosityBlockID 
                        default: 101:102

    vLuminosityBlockIDv1
                        type: VLuminosityBlockID 
                        default: empty

    vLuminosityBlockIDv2
                        type: VLuminosityBlockID 
                        default: (vector size = 1)
                          [0]: 1000:1100

    vLuminosityBlockIDv3
                        type: VLuminosityBlockID 
                        default: (vector size = 2)
                          [0]: 1000:1100
                          [1]: 10000:11000

    vLuminosityBlockIDv4
                        type: VLuminosityBlockID 
                        default: (vector size = 3)
                          [0]: 1000:1100
                          [1]: 10000:11000
                          [2]: 100000:110000

    lumiRangev1
                        type: LuminosityBlockRange 
                        default: 1:1-9:9

    lumiRangev2
                        type: LuminosityBlockRange 
                        default: 3:4-1000:1000

    vLumiRangev1
                        type: VLuminosityBlockRange 
                        default: empty

    vLumiRangev2
                        type: VLuminosityBlockRange 
                        default: (vector size = 1)
                          [0]: 1:1-9:9

    vLumiRangev3
                        type: VLuminosityBlockRange 
                        default: (vector size = 2)
                          [0]: 1:1-9:9
                          [1]: 3:4-1000:1000

    eventRangev1
                        type: EventRange 
                        default: 1:1-8:8

    eventRangev2
                        type: EventRange 
                        default: 3:4-1001:1002

    vEventRangev1
                        type: VEventRange 
                        default: empty

    vEventRangev2
                        type: VEventRange 
                        default: (vector size = 1)
                          [0]: 1:1-8:8

    vEventRangev3
                        type: VEventRange 
                        default: (vector size = 2)
                          [0]: 1:1-8:8
                          [1]: 3:4-1001:1002

    inputTagv1
                        type: InputTag 
                        default: 'One:Two:Three'

    inputTagv2
                        type: InputTag 
                        default: 'One:Two'

    inputTagv3
                        type: InputTag 
                        default: 'One'

    inputTagv4
                        type: InputTag 
                        default: 'One::Three'

    vInputTagv1
                        type: VInputTag 
                        default: empty

    vInputTagv2
                        type: VInputTag 
                        default: (vector size = 1)
                          [0]: 'One:Two:Three'

    vInputTagv3
                        type: VInputTag 
                        default: (vector size = 2)
                          [0]: 'One:Two:Three'
                          [1]: 'One:Two'

    vInputTagv4
                        type: VInputTag 
                        default: (vector size = 3)
                          [0]: 'One:Two:Three'
                          [1]: 'One:Two'
                          [2]: 'One'

    vInputTagv5
                        type: VInputTag 
                        default: (vector size = 4)
                          [0]: 'One:Two:Three'
                          [1]: 'One:Two'
                          [2]: 'One'
                          [3]: 'One::Three'

    esinputTagv1
                        type: ESInputTag 
                        default: 'One:Two'

    esinputTagv2
                        type: ESInputTag 
                        default: 'One:'

    esinputTagv3
                        type: ESInputTag 
                        default: ':Two'

    vESInputTagv1
                        type: VESInputTag 
                        default: empty

    vESInputTagv2
                        type: VESInputTag 
                        default: (vector size = 1)
                          [0]: 'One:Two'

    vESInputTagv3
                        type: VESInputTag 
                        default: (vector size = 2)
                          [0]: 'One:Two'
                          [1]: 'One:'

    vESInputTagv4
                        type: VESInputTag 
                        default: (vector size = 3)
                          [0]: 'One:Two'
                          [1]: 'One:'
                          [2]: ':Two'

    fileInPath
                        type: FileInPath 
                        default: 'FWCore/Integration/plugins/ProducerWithPSetDesc.cc'

    Empty group description

    bar
                        type: PSet 
                        see Section 1.3.2

    test101
                        type: PSet optional
                        see Section 1.3.3 (do not write to cfi)

    test102
                        type: VPSet optional
                        see Section 1.3.4 (do not write to cfi)

    test103
                        type: VPSet optional
                        see Section 1.3.5 (do not write to cfi)

    test104
                        type: untracked VPSet 
                        see Section 1.3.6

    test105
                        type: untracked VPSet 
                        see Section 1.3.7

    test1
                        type: double 
                        default: 0.1

    test2
                        type: double optional
                        default: 0.2

    test3
                        type: double optional
                        default: none (do not write to cfi)

    AND group:
                        optional
                        see Section 1.3.8

    oiswitch (switch)
                        type: int32 optional
                        see Section 1.3.9

    testDeeplyNested2
                        type: PSet 
                        see Section 1.3.10

    bars
                        type: VPSet 
                        see Section 1.3.11

    subpset
                        type: PSet optional
                        see Section 1.3.12

    wildcardPset
                        type: PSet 
                        see Section 1.3.13

    switchPset
                        type: PSet 
                        see Section 1.3.14

    xorPset
                        type: PSet 
                        see Section 1.3.15

    orPset
                        type: PSet 
                        see Section 1.3.16

    andPset
                        type: PSet 
                        see Section 1.3.17

    ifExistsPset
                        type: PSet 
                        see Section 1.3.18

    allowedLabelsPset
                        type: PSet 
                        see Section 1.3.19

    noDefaultPset3
                        type: PSet 
                        see Section 1.3.20

    noDefaultPset4
                        type: PSet 
                        see Section 1.3.21

    plugin
                        type: PSet 
                        see Section 1.3.22

    plugin1
                        type: PSet 
                        see Section 1.3.23

    plugin2
                        type: VPSet 
                        see Section 1.3.24

    plugin3
                        type: VPSet 
                        see Section 1.3.25

    plugin4
                        type: PSet 
                        see Section 1.3.26

    plugin5
                        type: VPSet 
                        see Section 1.3.27

    mightGet
                        type: untracked vstring optional
                        default: none
                        List contains the branch names for the EDProducts which 
                        might be requested by the module.
                        The format for identifying the EDProduct is the same as 
                        the one used for OutputModules, except no wild cards 
                        are allowed. E.g.
                        Foos_foomodule_whichFoo_RECO

    Section 1.3.1 vuint5 default contents: (vector size = 6)
        [0]: 4294967295
        [1]: 0
        [2]: 11
        [3]: 21
        [4]: 31
        [5]: 41

    Section 1.3.2 bar PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.3.3 test101 PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.3.4 test102 VPSet description:
        All elements will be validated using the PSet description in Section 1.3.4.1.
        Does not have a default VPSet.

    Section 1.3.4.1 description of PSet used to validate elements of VPSet:

        Description is empty

    Section 1.3.5 test103 VPSet description:
        All elements will be validated using the PSet description in Section 1.3.5.1.
        Does not have a default VPSet.

    Section 1.3.5.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.3.6 test104 VPSet description:
        All elements will be validated using the PSet description in Section 1.3.6.1.
        The default VPSet has 1 element.
        [0]: see Section 1.3.6.2

    Section 1.3.6.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.3.6.2 PSet description of default VPSet element [0]

        Description is empty

    Section 1.3.7 test105 VPSet description:
        All elements will be validated using the PSet description in Section 1.3.7.1.
        The default VPSet is empty.

    Section 1.3.7.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.3.8 AND group description:
    This optional AND group requires all or none of the following to be in the PSet

        testA
                        type: string 
                        default: 'fooA'

        testB
                        type: int32 
                        default: 100

        testC
                        type: int32 
                        default: 101

    Section 1.3.9 oiswitch (switch):
    The value of "oiswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        oiswitch
                        type: int32 optional
                        default: 1

        if oiswitch = 0
        oivalue
                        type: int32 
                        default: 100

        if oiswitch = 1
        AND group:
                        see Section 1.3.9.1

        if oiswitch = 2
        oivalue
                        type: string 
                        default: '102'

    Section 1.3.9.1 AND group description:
    This AND group requires all of the following to be in the PSet

        oivalue1
                        type: double 
                        default: 101

        oivalue2
                        type: double 
                        default: 101

    Section 1.3.10 testDeeplyNested2 PSet description:

        bswitch (switch)
                        type: bool 
                        see Section 1.3.10.1

        iswitch (switch)
                        type: int32 
                        see Section 1.3.10.2

        sswitch (switch)
                        type: string 
                        see Section 1.3.10.3

        ndiswitch (switch)
                        type: int32 optional (do not write to cfi)
                        see Section 1.3.10.4

        testint
                        type: int32 
                        default: 1000

    Section 1.3.10.1 bswitch (switch):
    The value of "bswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        bswitch
                        type: bool 
                        default: False

        if bswitch = False
        AND group:
                        see Section 1.3.10.1.1

        if bswitch = True
        bvalue
                        type: int32 
                        default: 100

    Section 1.3.10.1.1 AND group description:
    This AND group requires all of the following to be in the PSet

        bvalue1
                        type: double 
                        default: 101

        bvalue2
                        type: double 
                        default: 101

    Section 1.3.10.2 iswitch (switch):
    The value of "iswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        iswitch
                        type: int32 
                        default: 1

        if iswitch = 0
        ivalue
                        type: int32 
                        default: 100

        if iswitch = 1
        AND group:
                        see Section 1.3.10.2.1

        if iswitch = 2
        ivalue
                        type: string 
                        default: '102'

    Section 1.3.10.2.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ivalue1
                        type: double 
                        default: 101

        ivalue2
                        type: untracked double 
                        default: 101

    Section 1.3.10.3 sswitch (switch):
    The value of "sswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        sswitch
                        type: string 
                        default: '1'

        if sswitch = "0"
        svalue
                        type: int32 
                        default: 100

        if sswitch = "1"
        AND group:
                        see Section 1.3.10.3.1

        if sswitch = "2"
        svalue
                        type: string 
                        default: '102'

    Section 1.3.10.3.1 AND group description:
    This AND group requires all of the following to be in the PSet

        svalue1
                        type: double 
                        default: 101

        svalue2
                        type: double 
                        default: 101

    Section 1.3.10.4 ndiswitch (switch):
    The value of "ndiswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        ndiswitch
                        type: int32 optional
                        default: 1

        if ndiswitch = 0
        ndivalue
                        type: int32 
                        default: 100

        if ndiswitch = 1
        AND group:
                        see Section 1.3.10.4.1

        if ndiswitch = 2
        ndivalue
                        type: string 
                        default: '102'

    Section 1.3.10.4.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ndivalue1
                        type: double 
                        default: 101

        ndivalue2
                        type: double 
                        default: 101

    Section 1.3.11 bars VPSet description:
        All elements will be validated using the PSet description in Section 1.3.11.1.
        The default VPSet has 2 elements.
        [0]: see Section 1.3.11.2
        [1]: see Section 1.3.11.3

    Section 1.3.11.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

        testDeeplyNested
                        type: PSet 
                        see Section 1.3.11.1.1

        anotherVPSet
                        type: VPSet 
                        see Section 1.3.11.1.2

    Section 1.3.11.1.1 testDeeplyNested PSet description:

        bswitch (switch)
                        type: bool 
                        see Section 1.3.11.1.1.1

        iswitch (switch)
                        type: int32 
                        see Section 1.3.11.1.1.2

        sswitch (switch)
                        type: string 
                        see Section 1.3.11.1.1.3

        ndiswitch (switch)
                        type: int32 optional (do not write to cfi)
                        see Section 1.3.11.1.1.4

        testint
                        type: int32 
                        default: 1000

    Section 1.3.11.1.1.1 bswitch (switch):
    The value of "bswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        bswitch
                        type: bool 
                        default: False

        if bswitch = False
        AND group:
                        see Section 1.3.11.1.1.1.1

        if bswitch = True
        bvalue
                        type: int32 
                        default: 100

    Section 1.3.11.1.1.1.1 AND group description:
    This AND group requires all of the following to be in the PSet

        bvalue1
                        type: double 
                        default: 101

        bvalue2
                        type: double 
                        default: 101

    Section 1.3.11.1.1.2 iswitch (switch):
    The value of "iswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        iswitch
                        type: int32 
                        default: 1

        if iswitch = 0
        ivalue
                        type: int32 
                        default: 100

        if iswitch = 1
        AND group:
                        see Section 1.3.11.1.1.2.1

        if iswitch = 2
        ivalue
                        type: string 
                        default: '102'

    Section 1.3.11.1.1.2.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ivalue1
                        type: double 
                        default: 101

        ivalue2
                        type: untracked double 
                        default: 101

    Section 1.3.11.1.1.3 sswitch (switch):
    The value of "sswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        sswitch
                        type: string 
                        default: '1'

        if sswitch = "0"
        svalue
                        type: int32 
                        default: 100

        if sswitch = "1"
        AND group:
                        see Section 1.3.11.1.1.3.1

        if sswitch = "2"
        svalue
                        type: string 
                        default: '102'

    Section 1.3.11.1.1.3.1 AND group description:
    This AND group requires all of the following to be in the PSet

        svalue1
                        type: double 
                        default: 101

        svalue2
                        type: double 
                        default: 101

    Section 1.3.11.1.1.4 ndiswitch (switch):
    The value of "ndiswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        ndiswitch
                        type: int32 optional
                        default: 1

        if ndiswitch = 0
        ndivalue
                        type: int32 
                        default: 100

        if ndiswitch = 1
        AND group:
                        see Section 1.3.11.1.1.4.1

        if ndiswitch = 2
        ndivalue
                        type: string 
                        default: '102'

    Section 1.3.11.1.1.4.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ndivalue1
                        type: double 
                        default: 101

        ndivalue2
                        type: double 
                        default: 101

    Section 1.3.11.1.2 anotherVPSet VPSet description:
        All elements will be validated using the PSet description in Section 1.3.11.1.2.1.
        The default VPSet has 2 elements.
        [0]: see Section 1.3.11.1.2.2
        [1]: see Section 1.3.11.1.2.3

    Section 1.3.11.1.2.1 description of PSet used to validate elements of VPSet:

        xvalue
                        type: int32 
                        default: 7

    Section 1.3.11.1.2.2 PSet description of default VPSet element [0]

        Description is empty

    Section 1.3.11.1.2.3 PSet description of default VPSet element [1]

        xvalue
                        type: int32 
                        default: 100

    Section 1.3.11.2 PSet description of default VPSet element [0]

        oDrinks
                        type: uint32 
                        default: 11

    Section 1.3.11.3 PSet description of default VPSet element [1]

        ndouDrinks
                        type: untracked uint32 
                        default: 11

        oDrinks
                        type: uint32 
                        default: 11

        ouDrinks
                        type: untracked uint32 
                        default: 11

        testDeeplyNested
                        type: PSet 
                        see Section 1.3.11.3.1

        anotherVPSet
                        type: VPSet 
                        see Section 1.3.11.3.2

    Section 1.3.11.3.1 testDeeplyNested PSet description:

        testint
                        type: int32 
                        default: 2

    Section 1.3.11.3.2  VPSet description for VPSet that is part of the default of a containing VPSet:
        The default VPSet has 2 elements.
        [0]: see Section 1.3.11.3.2.1
        [1]: see Section 1.3.11.3.2.2

    Section 1.3.11.3.2.1 PSet description of default VPSet element [0]

        Description is empty

    Section 1.3.11.3.2.2 PSet description of default VPSet element [1]

        xvalue
                        type: int32 
                        default: 17

    Section 1.3.12 subpset PSet description:

        xvalue
                        type: int32 
                        default: 11

        bar
                        type: untracked PSet 
                        see Section 1.3.12.1

    Section 1.3.12.1 bar PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.3.13 wildcardPset PSet description:

        p_uint_opt
                        type: uint32 optional
                        default: 0

        labels must match this wildcard pattern: *
                        type: int32 optional
                        criteria: require zero or more

        labels must match this wildcard pattern: *
                        type: untracked double optional
                        criteria: require zero or more
                        A comment for a wildcard parameter

        labels must match this wildcard pattern: *
                        type: PSet optional
                        criteria: require exactly one

        labels must match this wildcard pattern: *
                        type: PSet optional
                        criteria: require at least one
                        (see Section 1.3.13.1)

        labels must match this wildcard pattern: *
                        type: VPSet optional
                        criteria: require exactly one

        labels must match this wildcard pattern: *
                        type: VPSet optional
                        criteria: require at least one
                        (see Section 1.3.13.2)

    Section 1.3.13.1 description of PSet matching wildcard:

        Drinks
                        type: uint32 
                        default: 5

    Section 1.3.13.2 description used to validate all PSets which are in the VPSet matching the wildcard:

        Drinks
                        type: uint32 
                        default: 5

        Drinks2
                        type: uint32 
                        default: 11

    Section 1.3.14 switchPset PSet description:

        iswitch (switch)
                        type: int32 
                        see Section 1.3.14.1
                        Comment for a ParameterSwitch

        addTeVRefits (switch)
                        type: bool 
                        see Section 1.3.14.2
                        If TeV refits are added, their sources need to be 
                        specified

    Section 1.3.14.1 iswitch (switch):
    The value of "iswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        iswitch
                        type: int32 
                        default: 1

        if iswitch = 0
        ivalue
                        type: vint32 
                        default: (vector size = 2)
                          [0]: 21
                          [1]: 22

        if iswitch = 1
        AND group:
                        see Section 1.3.14.1.1

        if iswitch = 2
        ivalue
                        type: string 
                        default: '102'

    Section 1.3.14.1.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ivalue1
                        type: double 
                        default: 101

        ivalue2
                        type: double 
                        default: 101

    Section 1.3.14.2 addTeVRefits (switch):
    The value of "addTeVRefits" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        addTeVRefits
                        type: bool 
                        default: True

        if addTeVRefits = False
        Empty group description

        if addTeVRefits = True
        AND group:
                        see Section 1.3.14.2.1

    Section 1.3.14.2.1 AND group description:
    This AND group requires all of the following to be in the PSet

        pickySrc
                        type: InputTag 
                        default: ''

        tpfmsSrc
                        type: InputTag 
                        default: ''

    Section 1.3.15 xorPset PSet description:

        XOR group:
                        see Section 1.3.15.1

        XOR group:
                        see Section 1.3.15.2

        XOR group:
                        optional (do not write to cfi)
                        see Section 1.3.15.3

        XOR group:
                        see Section 1.3.15.4

    Section 1.3.15.1 XOR group description:
    This XOR group requires exactly one of the following to be in the PSet

        name
                        type: string 
                        default: '11'

        name
                        type: uint32 
                        default: 11

    Section 1.3.15.2 XOR group description:
    This XOR group requires exactly one of the following to be in the PSet

        name1
                        type: string 
                        default: '11'

        name1
                        type: uint32 
                        default: 11

    Section 1.3.15.3 XOR group description:
    This optional XOR group requires exactly one or none of the following to be in the PSet

        name2
                        type: string 
                        default: '11'

        name2
                        type: uint32 
                        default: 11

    Section 1.3.15.4 XOR group description:
    This XOR group requires exactly one of the following to be in the PSet

        name3
                        type: string 
                        default: '11'

        name4
                        type: uint32 
                        default: 11

        test101
                        type: PSet 
                        see Section 1.3.15.4.1

        test103
                        type: VPSet 
                        see Section 1.3.15.4.2

    Section 1.3.15.4.1 test101 PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.3.15.4.2 test103 VPSet description:
        All elements will be validated using the PSet description in Section 1.3.15.4.2.1.
        Does not have a default VPSet.

    Section 1.3.15.4.2.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.3.16 orPset PSet description:

        OR group:
                        see Section 1.3.16.1

        OR group:
                        see Section 1.3.16.2

        OR group:
                        optional (do not write to cfi)
                        see Section 1.3.16.3

    Section 1.3.16.1 OR group description:
    This OR group requires at least one of the following to be in the PSet

        x1
                        type: string 
                        default: '11'

        x2
                        type: uint32 
                        default: 11

    Section 1.3.16.2 OR group description:
    This OR group requires at least one of the following to be in the PSet

        y1
                        type: string 
                        default: '11'

        y2
                        type: uint32 
                        default: 11

    Section 1.3.16.3 OR group description:
    This optional OR group requires at least one or none of the following to be in the PSet

        z1
                        type: string 
                        default: '11'

        z2
                        type: uint32 
                        default: 11

        test101
                        type: PSet 
                        see Section 1.3.16.3.1

        test103
                        type: VPSet 
                        see Section 1.3.16.3.2

    Section 1.3.16.3.1 test101 PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.3.16.3.2 test103 VPSet description:
        All elements will be validated using the PSet description in Section 1.3.16.3.2.1.
        Does not have a default VPSet.

    Section 1.3.16.3.2.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.3.17 andPset PSet description:

        AND group:
                        see Section 1.3.17.1

        AND group:
                        see Section 1.3.17.2

        AND group:
                        see Section 1.3.17.3

        AND group:
                        optional (do not write to cfi)
                        see Section 1.3.17.4

        AND group:
                        optional
                        see Section 1.3.17.5

    Section 1.3.17.1 AND group description:
    This AND group requires all of the following to be in the PSet

        x1
                        type: string 
                        default: '11'

        x2
                        type: uint32 
                        default: 11

    Section 1.3.17.2 AND group description:
    This AND group requires all of the following to be in the PSet

        y1
                        type: string 
                        default: '11'

        y2
                        type: uint32 
                        default: 11

    Section 1.3.17.3 AND group description:
    This AND group requires all of the following to be in the PSet

        z1
                        type: string 
                        default: '11'

        z2
                        type: uint32 
                        default: 11

    Section 1.3.17.4 AND group description:
    This optional AND group requires all or none of the following to be in the PSet

        a1
                        type: string 
                        default: '11'

        a2
                        type: uint32 
                        default: 11

    Section 1.3.17.5 AND group description:
    This optional AND group requires all or none of the following to be in the PSet

        b1
                        type: string 
                        default: '11'

        b2
                        type: uint32 
                        default: 11

        b3
                        type: uint32 
                        default: 11

        b4
                        type: uint32 
                        default: 11

        b5
                        type: uint32 
                        default: 11

        b6
                        type: uint32 
                        default: 11

    Section 1.3.18 ifExistsPset PSet description:

        IfExists pair:
                        see Section 1.3.18.1

        IfExists pair:
                        optional (do not write to cfi)
                        see Section 1.3.18.2

        IfExists pair:
                        see Section 1.3.18.3

    Section 1.3.18.1 IfExists pair description:
    If the first parameter exists, then the second is required to exist

        x1
                        type: uint32 
                        default: 11

        x2
                        type: string 
                        default: '11'

    Section 1.3.18.2 optional IfExists pair description:
    If the first parameter exists, then the second is allowed to exist

        y1
                        type: uint32 
                        default: 11

        y2
                        type: string 
                        default: '11'

    Section 1.3.18.3 IfExists pair description:
    If the first parameter exists, then the second is required to exist

        z1
                        type: uint32 
                        default: 11

        z2
                        type: string 
                        default: '11'

    Section 1.3.19 allowedLabelsPset PSet description:

        p_int_opt
                        type: int32 optional
                        default: 0

        testAllowedLabels (list of allowed labels)
                        see Section 1.3.19.1

        testAllowedLabelsUntracked (list of allowed labels)
                        see Section 1.3.19.2

        testOptAllowedLabels (list of allowed labels)
                        optional (do not write to cfi)
                        see Section 1.3.19.3

        testOptAllowedLabelsUntracked (list of allowed labels)
                        optional (do not write to cfi)
                        see Section 1.3.19.4

        testWithSet (list of allowed labels)
                        optional
                        see Section 1.3.19.5

        testWithVectorOfSets (list of allowed labels)
                        optional
                        see Section 1.3.19.6

    Section 1.3.19.1 testAllowedLabels - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testAllowedLabels
                        type: vstring 
                        default: empty

        type of allowed parameters:
                        int32

    Section 1.3.19.2 testAllowedLabelsUntracked - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testAllowedLabelsUntracked
                        type: untracked vstring 
                        default: empty

        type of allowed parameters:
                        untracked uint32

    Section 1.3.19.3 testOptAllowedLabels - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testOptAllowedLabels
                        type: vstring optional
                        default: empty

        type of allowed parameters:
                        int32

    Section 1.3.19.4 testOptAllowedLabelsUntracked - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testOptAllowedLabelsUntracked
                        type: untracked vstring optional
                        default: empty

        type of allowed parameters:
                        untracked uint32

    Section 1.3.19.5 testWithSet - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testWithSet
                        type: untracked vstring optional
                        default: empty

        type of allowed parameters:
                        untracked PSet
                        see Section 1.3.19.5.1

    Section 1.3.19.5.1 PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.3.19.6 testWithVectorOfSets - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testWithVectorOfSets
                        type: untracked vstring optional
                        default: empty

        type of allowed parameters:
                        untracked VPSet
                        see Section 1.3.19.6.1

    Section 1.3.19.6.1 PSet description used to validate all elements of VPSet's:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.3.20 noDefaultPset3 PSet description:

        noDefault1
                        type: int32 optional
                        default: none

        noDefault2
                        type: vint32 optional
                        default: none

        noDefault3
                        type: uint32 optional
                        default: none

        noDefault4
                        type: vuint32 optional
                        default: none

        noDefault5
                        type: int64 optional
                        default: none

        noDefault6
                        type: vint64 optional
                        default: none

        noDefault7
                        type: uint64 optional
                        default: none

        noDefault8
                        type: vuint64 optional
                        default: none

        noDefault9
                        type: double optional
                        default: none

        noDefault10
                        type: vdouble optional
                        default: none

        noDefault11
                        type: bool optional
                        default: none

        noDefault12
                        type: string optional
                        default: none

        noDefault13
                        type: vstring optional
                        default: none

        noDefault14
                        type: EventID optional
                        default: none

        noDefault15
                        type: VEventID optional
                        default: none

        noDefault16
                        type: LuminosityBlockID optional
                        default: none

        noDefault17
                        type: VLuminosityBlockID optional
                        default: none

        noDefault18
                        type: InputTag optional
                        default: none

        noDefault19
                        type: VInputTag optional
                        default: none

        noDefault20
                        type: FileInPath optional
                        default: none

        noDefault21
                        type: LuminosityBlockRange optional
                        default: none

        noDefault22
                        type: VLuminosityBlockRange optional
                        default: none

        noDefault23
                        type: EventRange optional
                        default: none

        noDefault24
                        type: VEventRange optional
                        default: none

    Section 1.3.21 noDefaultPset4 PSet description:

        noDefault1
                        type: untracked int32 optional
                        default: none

        noDefault2
                        type: untracked vint32 optional
                        default: none

        noDefault3
                        type: untracked uint32 optional
                        default: none

        noDefault4
                        type: untracked vuint32 optional
                        default: none

        noDefault5
                        type: untracked int64 optional
                        default: none

        noDefault6
                        type: untracked vint64 optional
                        default: none

        noDefault7
                        type: untracked uint64 optional
                        default: none

        noDefault8
                        type: untracked vuint64 optional
                        default: none

        noDefault9
                        type: untracked double optional
                        default: none

        noDefault10
                        type: untracked vdouble optional
                        default: none

        noDefault11
                        type: untracked bool optional
                        default: none

        noDefault12
                        type: untracked string optional
                        default: none

        noDefault13
                        type: untracked vstring optional
                        default: none

        noDefault14
                        type: untracked EventID optional
                        default: none

        noDefault15
                        type: untracked VEventID optional
                        default: none

        noDefault16
                        type: untracked LuminosityBlockID optional
                        default: none

        noDefault17
                        type: untracked VLuminosityBlockID optional
                        default: none

        noDefault18
                        type: untracked InputTag optional
                        default: none

        noDefault19
                        type: untracked VInputTag optional
                        default: none

        noDefault20
                        type: untracked FileInPath optional
                        default: none

        noDefault21
                        type: untracked LuminosityBlockRange optional
                        default: none

        noDefault22
                        type: untracked VLuminosityBlockRange optional
                        default: none

        noDefault23
                        type: untracked EventRange optional
                        default: none

        noDefault24
                        type: untracked VEventRange optional
                        default: none

    Section 1.3.22 plugin PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.3.22.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.3.22.1.1

        type
                        type: string 
                        default: 'edmtestAnotherValueMaker'

    Section 1.3.22.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.3.22)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.3.22.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: 'edmtestAnotherValueMaker'

    Section 1.3.22.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: 'edmtestAnotherValueMaker'

    Section 1.3.23 plugin1 PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.3.23.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.3.23.1.1

        type
                        type: string 
                        default: none

    Section 1.3.23.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.3.23)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.3.23.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: none

    Section 1.3.23.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: none

    Section 1.3.24 plugin2 VPSet description:
        All elements will be validated using the PSet description in Section 1.3.24.1.
        The default VPSet is empty.

    Section 1.3.24.1 description of PSet used to validate elements of VPSet:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.3.24.1.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.3.24.1.1.1

        type
                        type: string 
                        default: none

    Section 1.3.24.1.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.3.24.1)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.3.24.1.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: none

    Section 1.3.24.1.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: none

    Section 1.3.25 plugin3 VPSet description:
        All elements will be validated using the PSet description in Section 1.3.25.1.
        The default VPSet has 2 elements.
        [0]: see Section 1.3.25.2
        [1]: see Section 1.3.25.3

    Section 1.3.25.1 description of PSet used to validate elements of VPSet:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.3.25.1.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.3.25.1.1.1

        type
                        type: string 
                        default: none

    Section 1.3.25.1.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.3.25.1)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.3.25.1.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: none

    Section 1.3.25.1.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: none

    Section 1.3.25.2 PSet description of default VPSet element [0]

        type
                        type: string 
                        default: 'edmtestAnotherOneMaker'

    Section 1.3.25.3 PSet description of default VPSet element [1]

        type
                        type: string 
                        default: 'edmtestAnotherValueMaker'

        value
                        type: int32 
                        default: 11

    Section 1.3.26 plugin4 PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.3.26.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.3.26.1.1

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.3.26.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.3.26)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.3.26.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.3.26.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.3.27 plugin5 VPSet description:
        All elements will be validated using the PSet description in Section 1.3.27.1.
        The default VPSet has 2 elements.
        [0]: see Section 1.3.27.2
        [1]: see Section 1.3.27.3

    Section 1.3.27.1 description of PSet used to validate elements of VPSet:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.3.27.1.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.3.27.1.1.1

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.3.27.1.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.3.27.1)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.3.27.1.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.3.27.1.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.3.27.2 PSet description of default VPSet element [0]

        type
                        type: string 
                        default: 'edmtestAnotherOneMaker'

    Section 1.3.27.3 PSet description of default VPSet element [1]

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

        value
                        type: int32 
                        default: 11

  1.4 description without a module label

    testingAutoGeneratedCfi
                        type: untracked bool optional
                        default: True

    p_int
                        type: int32 
                        default: 2
                        A big integer. I am trying to test the wrapping of 
                        comments in the printed output by putting in a long 
                        comment to see if it gets wrapped OK. The comment 
                        should get indented to the second column indent on 
                        every line. By default newlines should be inserted 
                        between words to make the lines fit in the terminal 
                        screen width. There is a command line parameter that 
                        can be set to override this width to any desired value. 
                        If there is no terminal then it should default to 80. 
                        The logic for setting the width is in edmPluginHelp.cpp

    p_int_untracked
                        type: untracked int32 
                        default: -2147483647

    p_int_opt
                        type: int32 optional
                        default: 0

    p_int_optuntracked
                        type: untracked int32 optional
                        default: 7

    p_int_opt_nd
                        type: int32 optional
                        default: none

    p_int_optuntracked_nd
                        type: untracked int32 optional
                        default: none

    vint1
                        type: vint32 
                        default: empty

    vint2
                        type: vint32 
                        default: (vector size = 1)
                          [0]: 2147483647

    vint3
                        type: vint32 
                        default: (vector size = 2)
                          [0]: 2147483647
                          [1]: -2147483647

    vint4
                        type: vint32 
                        default: (vector size = 3)
                          [0]: 2147483647
                          [1]: -2147483647
                          [2]: 0

    uint1
                        type: uint32 
                        default: 4294967295

    uint2
                        type: untracked uint32 
                        default: 0

    vuint1
                        type: vuint32 
                        default: empty

    vuint2
                        type: vuint32 
                        default: (vector size = 1)
                          [0]: 4294967295

    vuint3
                        type: vuint32 
                        default: (vector size = 2)
                          [0]: 4294967295
                          [1]: 0

    vuint4
                        type: vuint32 
                        default: (vector size = 3)
                          [0]: 4294967295
                          [1]: 0
                          [2]: 11

    vuint5
                        type: vuint32 
                        default: see Section 1.4.1

    int64v1
                        type: int64 
                        default: 9000000000000000000

    int64v2
                        type: int64 
                        default: -9000000000000000000

    int64v3
                        type: int64 
                        default: 0

    vint64v1
                        type: vint64 
                        default: empty

    vint64v2
                        type: vint64 
                        default: (vector size = 1)
                          [0]: 9000000000000000000

    vint64v3
                        type: vint64 
                        default: (vector size = 2)
                          [0]: 9000000000000000000
                          [1]: -9000000000000000000

    vint64v4
                        type: vint64 
                        default: (vector size = 3)
                          [0]: 9000000000000000000
                          [1]: -9000000000000000000
                          [2]: 0

    uint64v1
                        type: uint64 
                        default: 18000000000000000000

    uint64v2
                        type: untracked uint64 
                        default: 0

    vuint64v1
                        type: vuint64 
                        default: empty

    vuint64v2
                        type: vuint64 
                        default: (vector size = 1)
                          [0]: 18000000000000000000

    vuint64v3
                        type: vuint64 
                        default: (vector size = 2)
                          [0]: 18000000000000000000
                          [1]: 0

    vuint64v4
                        type: vuint64 
                        default: (vector size = 3)
                          [0]: 18000000000000000000
                          [1]: 0
                          [2]: 11

    doublev1
                        type: double 
                        default: 2.2250738585072014e-308

    doublev2
                        type: untracked double 
                        default: 0

    doublev3
                        type: untracked double 
                        default: 0.3

    vdoublev1
                        type: vdouble 
                        default: empty

    vdoublev2
                        type: vdouble 
                        default: (vector size = 1)
                          [0]: 1e+300

    vdoublev3
                        type: vdouble 
                        default: (vector size = 2)
                          [0]: 1e+300
                          [1]: 0

    vdoublev4
                        type: vdouble 
                        default: (vector size = 3)
                          [0]: 1e+300
                          [1]: 0
                          [2]: 11

    vdoublev5
                        type: vdouble 
                        default: (vector size = 4)
                          [0]: 1e+300
                          [1]: 0
                          [2]: 11
                          [3]: 0.3

    boolv1
                        type: bool 
                        default: True

    boolv2
                        type: bool 
                        default: False

    stringv1
                        type: string 
                        default: 'Hello'

    stringv2
                        type: string 
                        default: ''

    vstringv1
                        type: vstring 
                        default: empty

    vstringv2
                        type: vstring 
                        default: (vector size = 1)
                          [0]: 'Hello'

    vstringv3
                        type: vstring 
                        default: (vector size = 2)
                          [0]: 'Hello'
                          [1]: 'World'

    vstringv4
                        type: vstring 
                        default: (vector size = 3)
                          [0]: 'Hello'
                          [1]: 'World'
                          [2]: ''

    eventIDv1
                        type: EventID 
                        default: 11:12

    eventIDv2
                        type: EventID 
                        default: 101:102

    vEventIDv1
                        type: VEventID 
                        default: empty

    vEventIDv2
                        type: VEventID 
                        default: (vector size = 1)
                          [0]: 1000:1100

    vEventIDv3
                        type: VEventID 
                        default: (vector size = 2)
                          [0]: 1000:1100
                          [1]: 10000:11000

    vEventIDv4
                        type: VEventID 
                        default: (vector size = 3)
                          [0]: 1000:1100
                          [1]: 10000:11000
                          [2]: 100000:110000

    luminosityIDv1
                        type: LuminosityBlockID 
                        default: 11:12

    luminosityIDv2
                        type: LuminosityBlockID 
                        default: 101:102

    vLuminosityBlockIDv1
                        type: VLuminosityBlockID 
                        default: empty

    vLuminosityBlockIDv2
                        type: VLuminosityBlockID 
                        default: (vector size = 1)
                          [0]: 1000:1100

    vLuminosityBlockIDv3
                        type: VLuminosityBlockID 
                        default: (vector size = 2)
                          [0]: 1000:1100
                          [1]: 10000:11000

    vLuminosityBlockIDv4
                        type: VLuminosityBlockID 
                        default: (vector size = 3)
                          [0]: 1000:1100
                          [1]: 10000:11000
                          [2]: 100000:110000

    lumiRangev1
                        type: LuminosityBlockRange 
                        default: 1:1-9:9

    lumiRangev2
                        type: LuminosityBlockRange 
                        default: 3:4-1000:1000

    vLumiRangev1
                        type: VLuminosityBlockRange 
                        default: empty

    vLumiRangev2
                        type: VLuminosityBlockRange 
                        default: (vector size = 1)
                          [0]: 1:1-9:9

    vLumiRangev3
                        type: VLuminosityBlockRange 
                        default: (vector size = 2)
                          [0]: 1:1-9:9
                          [1]: 3:4-1000:1000

    eventRangev1
                        type: EventRange 
                        default: 1:1-8:8

    eventRangev2
                        type: EventRange 
                        default: 3:4-1001:1002

    vEventRangev1
                        type: VEventRange 
                        default: empty

    vEventRangev2
                        type: VEventRange 
                        default: (vector size = 1)
                          [0]: 1:1-8:8

    vEventRangev3
                        type: VEventRange 
                        default: (vector size = 2)
                          [0]: 1:1-8:8
                          [1]: 3:4-1001:1002

    inputTagv1
                        type: InputTag 
                        default: 'One:Two:Three'

    inputTagv2
                        type: InputTag 
                        default: 'One:Two'

    inputTagv3
                        type: InputTag 
                        default: 'One'

    inputTagv4
                        type: InputTag 
                        default: 'One::Three'

    vInputTagv1
                        type: VInputTag 
                        default: empty

    vInputTagv2
                        type: VInputTag 
                        default: (vector size = 1)
                          [0]: 'One:Two:Three'

    vInputTagv3
                        type: VInputTag 
                        default: (vector size = 2)
                          [0]: 'One:Two:Three'
                          [1]: 'One:Two'

    vInputTagv4
                        type: VInputTag 
                        default: (vector size = 3)
                          [0]: 'One:Two:Three'
                          [1]: 'One:Two'
                          [2]: 'One'

    vInputTagv5
                        type: VInputTag 
                        default: (vector size = 4)
                          [0]: 'One:Two:Three'
                          [1]: 'One:Two'
                          [2]: 'One'
                          [3]: 'One::Three'

    esinputTagv1
                        type: ESInputTag 
                        default: 'One:Two'

    esinputTagv2
                        type: ESInputTag 
                        default: 'One:'

    esinputTagv3
                        type: ESInputTag 
                        default: ':Two'

    vESInputTagv1
                        type: VESInputTag 
                        default: empty

    vESInputTagv2
                        type: VESInputTag 
                        default: (vector size = 1)
                          [0]: 'One:Two'

    vESInputTagv3
                        type: VESInputTag 
                        default: (vector size = 2)
                          [0]: 'One:Two'
                          [1]: 'One:'

    vESInputTagv4
                        type: VESInputTag 
                        default: (vector size = 3)
                          [0]: 'One:Two'
                          [1]: 'One:'
                          [2]: ':Two'

    fileInPath
                        type: FileInPath 
                        default: 'FWCore/Integration/plugins/ProducerWithPSetDesc.cc'

    Empty group description

    bar
                        type: PSet 
                        see Section 1.4.2

    test101
                        type: PSet optional
                        see Section 1.4.3 (do not write to cfi)

    test102
                        type: VPSet optional
                        see Section 1.4.4 (do not write to cfi)

    test103
                        type: VPSet optional
                        see Section 1.4.5 (do not write to cfi)

    test104
                        type: untracked VPSet 
                        see Section 1.4.6

    test105
                        type: untracked VPSet 
                        see Section 1.4.7

    test1
                        type: double 
                        default: 0.1

    test2
                        type: double optional
                        default: 0.2

    test3
                        type: double optional
                        default: none (do not write to cfi)

    AND group:
                        optional
                        see Section 1.4.8

    oiswitch (switch)
                        type: int32 optional
                        see Section 1.4.9

    testDeeplyNested2
                        type: PSet 
                        see Section 1.4.10

    bars
                        type: VPSet 
                        see Section 1.4.11

    subpset
                        type: PSet optional
                        see Section 1.4.12

    wildcardPset
                        type: PSet 
                        see Section 1.4.13

    switchPset
                        type: PSet 
                        see Section 1.4.14

    xorPset
                        type: PSet 
                        see Section 1.4.15

    orPset
                        type: PSet 
                        see Section 1.4.16

    andPset
                        type: PSet 
                        see Section 1.4.17

    ifExistsPset
                        type: PSet 
                        see Section 1.4.18

    allowedLabelsPset
                        type: PSet 
                        see Section 1.4.19

    noDefaultPset3
                        type: PSet 
                        see Section 1.4.20

    noDefaultPset4
                        type: PSet 
                        see Section 1.4.21

    plugin
                        type: PSet 
                        see Section 1.4.22

    plugin1
                        type: PSet 
                        see Section 1.4.23

    plugin2
                        type: VPSet 
                        see Section 1.4.24

    plugin3
                        type: VPSet 
                        see Section 1.4.25

    plugin4
                        type: PSet 
                        see Section 1.4.26

    plugin5
                        type: VPSet 
                        see Section 1.4.27

    mightGet
                        type: untracked vstring optional
                        default: none
                        List contains the branch names for the EDProducts which 
                        might be requested by the module.
                        The format for identifying the EDProduct is the same as 
                        the one used for OutputModules, except no wild cards 
                        are allowed. E.g.
                        Foos_foomodule_whichFoo_RECO

    Section 1.4.1 vuint5 default contents: (vector size = 6)
        [0]: 4294967295
        [1]: 0
        [2]: 11
        [3]: 21
        [4]: 31
        [5]: 41

    Section 1.4.2 bar PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.4.3 test101 PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.4.4 test102 VPSet description:
        All elements will be validated using the PSet description in Section 1.4.4.1.
        Does not have a default VPSet.

    Section 1.4.4.1 description of PSet used to validate elements of VPSet:

        Description is empty

    Section 1.4.5 test103 VPSet description:
        All elements will be validated using the PSet description in Section 1.4.5.1.
        Does not have a default VPSet.

    Section 1.4.5.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.4.6 test104 VPSet description:
        All elements will be validated using the PSet description in Section 1.4.6.1.
        The default VPSet has 1 element.
        [0]: see Section 1.4.6.2

    Section 1.4.6.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.4.6.2 PSet description of default VPSet element [0]

        Description is empty

    Section 1.4.7 test105 VPSet description:
        All elements will be validated using the PSet description in Section 1.4.7.1.
        The default VPSet is empty.

    Section 1.4.7.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.4.8 AND group description:
    This optional AND group requires all or none of the following to be in the PSet

        testA
                        type: string 
                        default: 'fooA'

        testB
                        type: int32 
                        default: 100

        testC
                        type: int32 
                        default: 101

    Section 1.4.9 oiswitch (switch):
    The value of "oiswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        oiswitch
                        type: int32 optional
                        default: 1

        if oiswitch = 0
        oivalue
                        type: int32 
                        default: 100

        if oiswitch = 1
        AND group:
                        see Section 1.4.9.1

        if oiswitch = 2
        oivalue
                        type: string 
                        default: '102'

    Section 1.4.9.1 AND group description:
    This AND group requires all of the following to be in the PSet

        oivalue1
                        type: double 
                        default: 101

        oivalue2
                        type: double 
                        default: 101

    Section 1.4.10 testDeeplyNested2 PSet description:

        bswitch (switch)
                        type: bool 
                        see Section 1.4.10.1

        iswitch (switch)
                        type: int32 
                        see Section 1.4.10.2

        sswitch (switch)
                        type: string 
                        see Section 1.4.10.3

        ndiswitch (switch)
                        type: int32 optional (do not write to cfi)
                        see Section 1.4.10.4

        testint
                        type: int32 
                        default: 1000

    Section 1.4.10.1 bswitch (switch):
    The value of "bswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        bswitch
                        type: bool 
                        default: False

        if bswitch = False
        AND group:
                        see Section 1.4.10.1.1

        if bswitch = True
        bvalue
                        type: int32 
                        default: 100

    Section 1.4.10.1.1 AND group description:
    This AND group requires all of the following to be in the PSet

        bvalue1
                        type: double 
                        default: 101

        bvalue2
                        type: double 
                        default: 101

    Section 1.4.10.2 iswitch (switch):
    The value of "iswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        iswitch
                        type: int32 
                        default: 1

        if iswitch = 0
        ivalue
                        type: int32 
                        default: 100

        if iswitch = 1
        AND group:
                        see Section 1.4.10.2.1

        if iswitch = 2
        ivalue
                        type: string 
                        default: '102'

    Section 1.4.10.2.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ivalue1
                        type: double 
                        default: 101

        ivalue2
                        type: untracked double 
                        default: 101

    Section 1.4.10.3 sswitch (switch):
    The value of "sswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        sswitch
                        type: string 
                        default: '1'

        if sswitch = "0"
        svalue
                        type: int32 
                        default: 100

        if sswitch = "1"
        AND group:
                        see Section 1.4.10.3.1

        if sswitch = "2"
        svalue
                        type: string 
                        default: '102'

    Section 1.4.10.3.1 AND group description:
    This AND group requires all of the following to be in the PSet

        svalue1
                        type: double 
                        default: 101

        svalue2
                        type: double 
                        default: 101

    Section 1.4.10.4 ndiswitch (switch):
    The value of "ndiswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        ndiswitch
                        type: int32 optional
                        default: 1

        if ndiswitch = 0
        ndivalue
                        type: int32 
                        default: 100

        if ndiswitch = 1
        AND group:
                        see Section 1.4.10.4.1

        if ndiswitch = 2
        ndivalue
                        type: string 
                        default: '102'

    Section 1.4.10.4.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ndivalue1
                        type: double 
                        default: 101

        ndivalue2
                        type: double 
                        default: 101

    Section 1.4.11 bars VPSet description:
        All elements will be validated using the PSet description in Section 1.4.11.1.
        The default VPSet has 2 elements.
        [0]: see Section 1.4.11.2
        [1]: see Section 1.4.11.3

    Section 1.4.11.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

        testDeeplyNested
                        type: PSet 
                        see Section 1.4.11.1.1

        anotherVPSet
                        type: VPSet 
                        see Section 1.4.11.1.2

    Section 1.4.11.1.1 testDeeplyNested PSet description:

        bswitch (switch)
                        type: bool 
                        see Section 1.4.11.1.1.1

        iswitch (switch)
                        type: int32 
                        see Section 1.4.11.1.1.2

        sswitch (switch)
                        type: string 
                        see Section 1.4.11.1.1.3

        ndiswitch (switch)
                        type: int32 optional (do not write to cfi)
                        see Section 1.4.11.1.1.4

        testint
                        type: int32 
                        default: 1000

    Section 1.4.11.1.1.1 bswitch (switch):
    The value of "bswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        bswitch
                        type: bool 
                        default: False

        if bswitch = False
        AND group:
                        see Section 1.4.11.1.1.1.1

        if bswitch = True
        bvalue
                        type: int32 
                        default: 100

    Section 1.4.11.1.1.1.1 AND group description:
    This AND group requires all of the following to be in the PSet

        bvalue1
                        type: double 
                        default: 101

        bvalue2
                        type: double 
                        default: 101

    Section 1.4.11.1.1.2 iswitch (switch):
    The value of "iswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        iswitch
                        type: int32 
                        default: 1

        if iswitch = 0
        ivalue
                        type: int32 
                        default: 100

        if iswitch = 1
        AND group:
                        see Section 1.4.11.1.1.2.1

        if iswitch = 2
        ivalue
                        type: string 
                        default: '102'

    Section 1.4.11.1.1.2.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ivalue1
                        type: double 
                        default: 101

        ivalue2
                        type: untracked double 
                        default: 101

    Section 1.4.11.1.1.3 sswitch (switch):
    The value of "sswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        sswitch
                        type: string 
                        default: '1'

        if sswitch = "0"
        svalue
                        type: int32 
                        default: 100

        if sswitch = "1"
        AND group:
                        see Section 1.4.11.1.1.3.1

        if sswitch = "2"
        svalue
                        type: string 
                        default: '102'

    Section 1.4.11.1.1.3.1 AND group description:
    This AND group requires all of the following to be in the PSet

        svalue1
                        type: double 
                        default: 101

        svalue2
                        type: double 
                        default: 101

    Section 1.4.11.1.1.4 ndiswitch (switch):
    The value of "ndiswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        ndiswitch
                        type: int32 optional
                        default: 1

        if ndiswitch = 0
        ndivalue
                        type: int32 
                        default: 100

        if ndiswitch = 1
        AND group:
                        see Section 1.4.11.1.1.4.1

        if ndiswitch = 2
        ndivalue
                        type: string 
                        default: '102'

    Section 1.4.11.1.1.4.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ndivalue1
                        type: double 
                        default: 101

        ndivalue2
                        type: double 
                        default: 101

    Section 1.4.11.1.2 anotherVPSet VPSet description:
        All elements will be validated using the PSet description in Section 1.4.11.1.2.1.
        The default VPSet has 2 elements.
        [0]: see Section 1.4.11.1.2.2
        [1]: see Section 1.4.11.1.2.3

    Section 1.4.11.1.2.1 description of PSet used to validate elements of VPSet:

        xvalue
                        type: int32 
                        default: 7

    Section 1.4.11.1.2.2 PSet description of default VPSet element [0]

        Description is empty

    Section 1.4.11.1.2.3 PSet description of default VPSet element [1]

        xvalue
                        type: int32 
                        default: 100

    Section 1.4.11.2 PSet description of default VPSet element [0]

        oDrinks
                        type: uint32 
                        default: 11

    Section 1.4.11.3 PSet description of default VPSet element [1]

        ndouDrinks
                        type: untracked uint32 
                        default: 11

        oDrinks
                        type: uint32 
                        default: 11

        ouDrinks
                        type: untracked uint32 
                        default: 11

        testDeeplyNested
                        type: PSet 
                        see Section 1.4.11.3.1

        anotherVPSet
                        type: VPSet 
                        see Section 1.4.11.3.2

    Section 1.4.11.3.1 testDeeplyNested PSet description:

        testint
                        type: int32 
                        default: 2

    Section 1.4.11.3.2  VPSet description for VPSet that is part of the default of a containing VPSet:
        The default VPSet has 2 elements.
        [0]: see Section 1.4.11.3.2.1
        [1]: see Section 1.4.11.3.2.2

    Section 1.4.11.3.2.1 PSet description of default VPSet element [0]

        Description is empty

    Section 1.4.11.3.2.2 PSet description of default VPSet element [1]

        xvalue
                        type: int32 
                        default: 17

    Section 1.4.12 subpset PSet description:

        xvalue
                        type: int32 
                        default: 11

        bar
                        type: untracked PSet 
                        see Section 1.4.12.1

    Section 1.4.12.1 bar PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.4.13 wildcardPset PSet description:

        p_uint_opt
                        type: uint32 optional
                        default: 0

        labels must match this wildcard pattern: *
                        type: int32 optional
                        criteria: require zero or more

        labels must match this wildcard pattern: *
                        type: untracked double optional
                        criteria: require zero or more
                        A comment for a wildcard parameter

        labels must match this wildcard pattern: *
                        type: PSet optional
                        criteria: require exactly one

        labels must match this wildcard pattern: *
                        type: PSet optional
                        criteria: require at least one
                        (see Section 1.4.13.1)

        labels must match this wildcard pattern: *
                        type: VPSet optional
                        criteria: require exactly one

        labels must match this wildcard pattern: *
                        type: VPSet optional
                        criteria: require at least one
                        (see Section 1.4.13.2)

    Section 1.4.13.1 description of PSet matching wildcard:

        Drinks
                        type: uint32 
                        default: 5

    Section 1.4.13.2 description used to validate all PSets which are in the VPSet matching the wildcard:

        Drinks
                        type: uint32 
                        default: 5

        Drinks2
                        type: uint32 
                        default: 11

    Section 1.4.14 switchPset PSet description:

        iswitch (switch)
                        type: int32 
                        see Section 1.4.14.1
                        Comment for a ParameterSwitch

        addTeVRefits (switch)
                        type: bool 
                        see Section 1.4.14.2
                        If TeV refits are added, their sources need to be 
                        specified

    Section 1.4.14.1 iswitch (switch):
    The value of "iswitch" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        iswitch
                        type: int32 
                        default: 1

        if iswitch = 0
        ivalue
                        type: vint32 
                        default: (vector size = 2)
                          [0]: 21
                          [1]: 22

        if iswitch = 1
        AND group:
                        see Section 1.4.14.1.1

        if iswitch = 2
        ivalue
                        type: string 
                        default: '102'

    Section 1.4.14.1.1 AND group description:
    This AND group requires all of the following to be in the PSet

        ivalue1
                        type: double 
                        default: 101

        ivalue2
                        type: double 
                        default: 101

    Section 1.4.14.2 addTeVRefits (switch):
    The value of "addTeVRefits" controls which other parameters
    are required or allowed to be in the PSet.

        switch:
        addTeVRefits
                        type: bool 
                        default: True

        if addTeVRefits = False
        Empty group description

        if addTeVRefits = True
        AND group:
                        see Section 1.4.14.2.1

    Section 1.4.14.2.1 AND group description:
    This AND group requires all of the following to be in the PSet

        pickySrc
                        type: InputTag 
                        default: ''

        tpfmsSrc
                        type: InputTag 
                        default: ''

    Section 1.4.15 xorPset PSet description:

        XOR group:
                        see Section 1.4.15.1

        XOR group:
                        see Section 1.4.15.2

        XOR group:
                        optional (do not write to cfi)
                        see Section 1.4.15.3

        XOR group:
                        see Section 1.4.15.4

    Section 1.4.15.1 XOR group description:
    This XOR group requires exactly one of the following to be in the PSet

        name
                        type: string 
                        default: '11'

        name
                        type: uint32 
                        default: 11

    Section 1.4.15.2 XOR group description:
    This XOR group requires exactly one of the following to be in the PSet

        name1
                        type: string 
                        default: '11'

        name1
                        type: uint32 
                        default: 11

    Section 1.4.15.3 XOR group description:
    This optional XOR group requires exactly one or none of the following to be in the PSet

        name2
                        type: string 
                        default: '11'

        name2
                        type: uint32 
                        default: 11

    Section 1.4.15.4 XOR group description:
    This XOR group requires exactly one of the following to be in the PSet

        name3
                        type: string 
                        default: '11'

        name4
                        type: uint32 
                        default: 11

        test101
                        type: PSet 
                        see Section 1.4.15.4.1

        test103
                        type: VPSet 
                        see Section 1.4.15.4.2

    Section 1.4.15.4.1 test101 PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.4.15.4.2 test103 VPSet description:
        All elements will be validated using the PSet description in Section 1.4.15.4.2.1.
        Does not have a default VPSet.

    Section 1.4.15.4.2.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.4.16 orPset PSet description:

        OR group:
                        see Section 1.4.16.1

        OR group:
                        see Section 1.4.16.2

        OR group:
                        optional (do not write to cfi)
                        see Section 1.4.16.3

    Section 1.4.16.1 OR group description:
    This OR group requires at least one of the following to be in the PSet

        x1
                        type: string 
                        default: '11'

        x2
                        type: uint32 
                        default: 11

    Section 1.4.16.2 OR group description:
    This OR group requires at least one of the following to be in the PSet

        y1
                        type: string 
                        default: '11'

        y2
                        type: uint32 
                        default: 11

    Section 1.4.16.3 OR group description:
    This optional OR group requires at least one or none of the following to be in the PSet

        z1
                        type: string 
                        default: '11'

        z2
                        type: uint32 
                        default: 11

        test101
                        type: PSet 
                        see Section 1.4.16.3.1

        test103
                        type: VPSet 
                        see Section 1.4.16.3.2

    Section 1.4.16.3.1 test101 PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.4.16.3.2 test103 VPSet description:
        All elements will be validated using the PSet description in Section 1.4.16.3.2.1.
        Does not have a default VPSet.

    Section 1.4.16.3.2.1 description of PSet used to validate elements of VPSet:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

        ndoDrinks
                        type: uint32 optional
                        default: none

        ndouDrinks
                        type: untracked uint32 optional
                        default: none

    Section 1.4.17 andPset PSet description:

        AND group:
                        see Section 1.4.17.1

        AND group:
                        see Section 1.4.17.2

        AND group:
                        see Section 1.4.17.3

        AND group:
                        optional (do not write to cfi)
                        see Section 1.4.17.4

        AND group:
                        optional
                        see Section 1.4.17.5

    Section 1.4.17.1 AND group description:
    This AND group requires all of the following to be in the PSet

        x1
                        type: string 
                        default: '11'

        x2
                        type: uint32 
                        default: 11

    Section 1.4.17.2 AND group description:
    This AND group requires all of the following to be in the PSet

        y1
                        type: string 
                        default: '11'

        y2
                        type: uint32 
                        default: 11

    Section 1.4.17.3 AND group description:
    This AND group requires all of the following to be in the PSet

        z1
                        type: string 
                        default: '11'

        z2
                        type: uint32 
                        default: 11

    Section 1.4.17.4 AND group description:
    This optional AND group requires all or none of the following to be in the PSet

        a1
                        type: string 
                        default: '11'

        a2
                        type: uint32 
                        default: 11

    Section 1.4.17.5 AND group description:
    This optional AND group requires all or none of the following to be in the PSet

        b1
                        type: string 
                        default: '11'

        b2
                        type: uint32 
                        default: 11

        b3
                        type: uint32 
                        default: 11

        b4
                        type: uint32 
                        default: 11

        b5
                        type: uint32 
                        default: 11

        b6
                        type: uint32 
                        default: 11

    Section 1.4.18 ifExistsPset PSet description:

        IfExists pair:
                        see Section 1.4.18.1

        IfExists pair:
                        optional (do not write to cfi)
                        see Section 1.4.18.2

        IfExists pair:
                        see Section 1.4.18.3

    Section 1.4.18.1 IfExists pair description:
    If the first parameter exists, then the second is required to exist

        x1
                        type: uint32 
                        default: 11

        x2
                        type: string 
                        default: '11'

    Section 1.4.18.2 optional IfExists pair description:
    If the first parameter exists, then the second is allowed to exist

        y1
                        type: uint32 
                        default: 11

        y2
                        type: string 
                        default: '11'

    Section 1.4.18.3 IfExists pair description:
    If the first parameter exists, then the second is required to exist

        z1
                        type: uint32 
                        default: 11

        z2
                        type: string 
                        default: '11'

    Section 1.4.19 allowedLabelsPset PSet description:

        p_int_opt
                        type: int32 optional
                        default: 0

        testAllowedLabels (list of allowed labels)
                        see Section 1.4.19.1

        testAllowedLabelsUntracked (list of allowed labels)
                        see Section 1.4.19.2

        testOptAllowedLabels (list of allowed labels)
                        optional (do not write to cfi)
                        see Section 1.4.19.3

        testOptAllowedLabelsUntracked (list of allowed labels)
                        optional (do not write to cfi)
                        see Section 1.4.19.4

        testWithSet (list of allowed labels)
                        optional
                        see Section 1.4.19.5

        testWithVectorOfSets (list of allowed labels)
                        optional
                        see Section 1.4.19.6

    Section 1.4.19.1 testAllowedLabels - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testAllowedLabels
                        type: vstring 
                        default: empty

        type of allowed parameters:
                        int32

    Section 1.4.19.2 testAllowedLabelsUntracked - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testAllowedLabelsUntracked
                        type: untracked vstring 
                        default: empty

        type of allowed parameters:
                        untracked uint32

    Section 1.4.19.3 testOptAllowedLabels - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testOptAllowedLabels
                        type: vstring optional
                        default: empty

        type of allowed parameters:
                        int32

    Section 1.4.19.4 testOptAllowedLabelsUntracked - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testOptAllowedLabelsUntracked
                        type: untracked vstring optional
                        default: empty

        type of allowed parameters:
                        untracked uint32

    Section 1.4.19.5 testWithSet - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testWithSet
                        type: untracked vstring optional
                        default: empty

        type of allowed parameters:
                        untracked PSet
                        see Section 1.4.19.5.1

    Section 1.4.19.5.1 PSet description:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.4.19.6 testWithVectorOfSets - allowed labels description
    The following parameter contains a list of parameter labels
    which are allowed to be in the PSet

        testWithVectorOfSets
                        type: untracked vstring optional
                        default: empty

        type of allowed parameters:
                        untracked VPSet
                        see Section 1.4.19.6.1

    Section 1.4.19.6.1 PSet description used to validate all elements of VPSet's:

        Drinks
                        type: uint32 
                        default: 5

        uDrinks
                        type: untracked uint32 
                        default: 5

        oDrinks
                        type: uint32 optional
                        default: 5

        ouDrinks
                        type: untracked uint32 optional
                        default: 5

    Section 1.4.20 noDefaultPset3 PSet description:

        noDefault1
                        type: int32 optional
                        default: none

        noDefault2
                        type: vint32 optional
                        default: none

        noDefault3
                        type: uint32 optional
                        default: none

        noDefault4
                        type: vuint32 optional
                        default: none

        noDefault5
                        type: int64 optional
                        default: none

        noDefault6
                        type: vint64 optional
                        default: none

        noDefault7
                        type: uint64 optional
                        default: none

        noDefault8
                        type: vuint64 optional
                        default: none

        noDefault9
                        type: double optional
                        default: none

        noDefault10
                        type: vdouble optional
                        default: none

        noDefault11
                        type: bool optional
                        default: none

        noDefault12
                        type: string optional
                        default: none

        noDefault13
                        type: vstring optional
                        default: none

        noDefault14
                        type: EventID optional
                        default: none

        noDefault15
                        type: VEventID optional
                        default: none

        noDefault16
                        type: LuminosityBlockID optional
                        default: none

        noDefault17
                        type: VLuminosityBlockID optional
                        default: none

        noDefault18
                        type: InputTag optional
                        default: none

        noDefault19
                        type: VInputTag optional
                        default: none

        noDefault20
                        type: FileInPath optional
                        default: none

        noDefault21
                        type: LuminosityBlockRange optional
                        default: none

        noDefault22
                        type: VLuminosityBlockRange optional
                        default: none

        noDefault23
                        type: EventRange optional
                        default: none

        noDefault24
                        type: VEventRange optional
                        default: none

    Section 1.4.21 noDefaultPset4 PSet description:

        noDefault1
                        type: untracked int32 optional
                        default: none

        noDefault2
                        type: untracked vint32 optional
                        default: none

        noDefault3
                        type: untracked uint32 optional
                        default: none

        noDefault4
                        type: untracked vuint32 optional
                        default: none

        noDefault5
                        type: untracked int64 optional
                        default: none

        noDefault6
                        type: untracked vint64 optional
                        default: none

        noDefault7
                        type: untracked uint64 optional
                        default: none

        noDefault8
                        type: untracked vuint64 optional
                        default: none

        noDefault9
                        type: untracked double optional
                        default: none

        noDefault10
                        type: untracked vdouble optional
                        default: none

        noDefault11
                        type: untracked bool optional
                        default: none

        noDefault12
                        type: untracked string optional
                        default: none

        noDefault13
                        type: untracked vstring optional
                        default: none

        noDefault14
                        type: untracked EventID optional
                        default: none

        noDefault15
                        type: untracked VEventID optional
                        default: none

        noDefault16
                        type: untracked LuminosityBlockID optional
                        default: none

        noDefault17
                        type: untracked VLuminosityBlockID optional
                        default: none

        noDefault18
                        type: untracked InputTag optional
                        default: none

        noDefault19
                        type: untracked VInputTag optional
                        default: none

        noDefault20
                        type: untracked FileInPath optional
                        default: none

        noDefault21
                        type: untracked LuminosityBlockRange optional
                        default: none

        noDefault22
                        type: untracked VLuminosityBlockRange optional
                        default: none

        noDefault23
                        type: untracked EventRange optional
                        default: none

        noDefault24
                        type: untracked VEventRange optional
                        default: none

    Section 1.4.22 plugin PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.4.22.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.4.22.1.1

        type
                        type: string 
                        default: 'edmtestAnotherValueMaker'

    Section 1.4.22.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.4.22)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.4.22.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: 'edmtestAnotherValueMaker'

    Section 1.4.22.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: 'edmtestAnotherValueMaker'

    Section 1.4.23 plugin1 PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.4.23.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.4.23.1.1

        type
                        type: string 
                        default: none

    Section 1.4.23.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.4.23)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.4.23.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: none

    Section 1.4.23.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: none

    Section 1.4.24 plugin2 VPSet description:
        All elements will be validated using the PSet description in Section 1.4.24.1.
        The default VPSet is empty.

    Section 1.4.24.1 description of PSet used to validate elements of VPSet:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.4.24.1.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.4.24.1.1.1

        type
                        type: string 
                        default: none

    Section 1.4.24.1.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.4.24.1)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.4.24.1.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: none

    Section 1.4.24.1.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: none

    Section 1.4.25 plugin3 VPSet description:
        All elements will be validated using the PSet description in Section 1.4.25.1.
        The default VPSet has 2 elements.
        [0]: see Section 1.4.25.2
        [1]: see Section 1.4.25.3

    Section 1.4.25.1 description of PSet used to validate elements of VPSet:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.4.25.1.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.4.25.1.1.1

        type
                        type: string 
                        default: none

    Section 1.4.25.1.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.4.25.1)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.4.25.1.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: none

    Section 1.4.25.1.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: none

    Section 1.4.25.2 PSet description of default VPSet element [0]

        type
                        type: string 
                        default: 'edmtestAnotherOneMaker'

    Section 1.4.25.3 PSet description of default VPSet element [1]

        type
                        type: string 
                        default: 'edmtestAnotherValueMaker'

        value
                        type: int32 
                        default: 11

    Section 1.4.26 plugin4 PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.4.26.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.4.26.1.1

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.4.26.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.4.26)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.4.26.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.4.26.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.4.27 plugin5 VPSet description:
        All elements will be validated using the PSet description in Section 1.4.27.1.
        The default VPSet has 2 elements.
        [0]: see Section 1.4.27.2
        [1]: see Section 1.4.27.3

    Section 1.4.27.1 description of PSet used to validate elements of VPSet:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

    Section 1.4.27.1.1 ParameterSet description for plugin named "edmtestAnotherMakerWithRecursivePlugin"

        value
                        type: int32 
                        default: 5

        pluginRecursive
                        type: PSet 
                        see Section 1.4.27.1.1.1

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.4.27.1.1.1 pluginRecursive PSet description:

        There are multiple possible different descriptions for this ParameterSet
        because it will be used by a helper plugin object contained inside the top level
        module plugin object and the type of the helper plugin object is configurable.
        Or if it is in a vector of ParameterSets it might be used by multiple
        helper plugin objects and each could be configured with a different plugin type.
        Each plugin type could allow a different set of configuration parameters.
        Each subsection of this section has one of the possible descriptions.
        All of these plugins are from the category "PluginDescriptoredmtestAnotherIntFactory".
        The plugin type is specified by the parameter named "type".

        *** The descriptions for this plugin category already started printing above (see Section 1.4.27.1)! ***
        *** We might still be in the middle of that printout at this point because it might be recursive. ***
        *** We'll not duplicate that printout and skip it. ***
        *** (N.B. If we tried to print it again, we might fall into an infinite recursion.) ***

    Section 1.4.27.1.2 ParameterSet description for plugin named "edmtestAnotherOneMaker"

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.4.27.1.3 ParameterSet description for plugin named "edmtestAnotherValueMaker"

        value
                        type: int32 
                        default: 5

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

    Section 1.4.27.2 PSet description of default VPSet element [0]

        type
                        type: string 
                        default: 'edmtestAnotherOneMaker'

    Section 1.4.27.3 PSet description of default VPSet element [1]

        type
                        type: string 
                        default: 'edmtestAnotherMakerWithRecursivePlugin'

        value
                        type: int32 
                        default: 11

