class SubListSwapMoveSelectorConfig extends MoveSelectorConfig<SubListSwapMoveSelectorConfig> {

    public static final String XML_ELEMENT_NAME = "subListSwapMoveSelector";

    /**
     * @deprecated The minimumSubListSize on the SubListSwapMoveSelectorConfig is deprecated and will be removed in a future
     *             major version of OptaPlanner. Use {@link SubListSelectorConfig#getMinimumSubListSize()} instead.
     */
    @Deprecated(forRemoval = true)
    protected Integer minimumSubListSize = null;
    /**
     * @deprecated The maximumSubListSize on the SubListSwapMoveSelectorConfig is deprecated and will be removed in a future
     *             major version of OptaPlanner. Use {@link SubListSelectorConfig#getMaximumSubListSize()} instead.
     */
    @Deprecated(forRemoval = true)
    protected Integer maximumSubListSize = null;
    private Boolean selectReversingMoveToo = null;
    @XmlElement(name = "subListSelector")
    private SubListSelectorConfig subListSelectorConfig = null;
    @XmlElement(name = "secondarySubListSelector")
    private SubListSelectorConfig secondarySubListSelectorConfig = null;

    /**
     * @deprecated The minimumSubListSize on the SubListSwapMoveSelectorConfig is deprecated and will be removed in a future
     *             major version of OptaPlanner. Use {@link SubListSelectorConfig#getMinimumSubListSize()} instead.
     */
    @Deprecated(forRemoval = true)
    public Integer getMinimumSubListSize() {
        return minimumSubListSize;
    }

    /**
     * @deprecated The minimumSubListSize on the SubListSwapMoveSelectorConfig is deprecated and will be removed in a future
     *             major version of OptaPlanner. Use {@link SubListSelectorConfig#setMinimumSubListSize(Integer)} instead.
     */
    @Deprecated(forRemoval = true)
    public void setMinimumSubListSize(Integer minimumSubListSize) {
        this.minimumSubListSize = minimumSubListSize;
    }

    /**
     * @deprecated The maximumSubListSize on the SubListSwapMoveSelectorConfig is deprecated and will be removed in a future
     *             major version of OptaPlanner. Use {@link SubListSelectorConfig#getMaximumSubListSize()} instead.
     */
    @Deprecated(forRemoval = true)
    public Integer getMaximumSubListSize() {
        return maximumSubListSize;
    }

    /**
     * @deprecated The maximumSubListSize on the SubListSwapMoveSelectorConfig is deprecated and will be removed in a future
     *             major version of OptaPlanner. Use {@link SubListSelectorConfig#setMaximumSubListSize(Integer)} instead.
     */
    @Deprecated(forRemoval = true)
    public void setMaximumSubListSize(Integer maximumSubListSize) {
        this.maximumSubListSize = maximumSubListSize;
    }

    public Boolean getSelectReversingMoveToo() {
        return selectReversingMoveToo;
    }

    public void setSelectReversingMoveToo(Boolean selectReversingMoveToo) {
        this.selectReversingMoveToo = selectReversingMoveToo;
    }

    public SubListSelectorConfig getSubListSelectorConfig() {
        return subListSelectorConfig;
    }

    public void setSubListSelectorConfig(SubListSelectorConfig subListSelectorConfig) {
        this.subListSelectorConfig = subListSelectorConfig;
    }

    public SubListSelectorConfig getSecondarySubListSelectorConfig() {
        return secondarySubListSelectorConfig;
    }

    public void setSecondarySubListSelectorConfig(SubListSelectorConfig secondarySubListSelectorConfig) {
        this.secondarySubListSelectorConfig = secondarySubListSelectorConfig;
    }

    // ************************************************************************
    // With methods
    // ************************************************************************

    public SubListSwapMoveSelectorConfig withSelectReversingMoveToo(Boolean selectReversingMoveToo) {
        this.setSelectReversingMoveToo(selectReversingMoveToo);
        return this;
    }

    public SubListSwapMoveSelectorConfig withSubListSelectorConfig(SubListSelectorConfig subListSelectorConfig) {
        this.setSubListSelectorConfig(subListSelectorConfig);
        return this;
    }

    public SubListSwapMoveSelectorConfig
            withSecondarySubListSelectorConfig(SubListSelectorConfig secondarySubListSelectorConfig) {
        this.setSecondarySubListSelectorConfig(secondarySubListSelectorConfig);
        return this;
    }

    @Override
    public SubListSwapMoveSelectorConfig inherit(SubListSwapMoveSelectorConfig inheritedConfig) {<FILL_FUNCTION_BODY>}

    @Override
    public SubListSwapMoveSelectorConfig copyConfig() {
        return new SubListSwapMoveSelectorConfig().inherit(this);
    }

    @Override
    public void visitReferencedClasses(Consumer<Class<?>> classVisitor) {
        visitCommonReferencedClasses(classVisitor);
        if (subListSelectorConfig != null) {
            subListSelectorConfig.visitReferencedClasses(classVisitor);
        }
        if (secondarySubListSelectorConfig != null) {
            secondarySubListSelectorConfig.visitReferencedClasses(classVisitor);
        }
    }

    @Override
    public String toString() {
        return getClass().getSimpleName() + "(" + subListSelectorConfig
                + (secondarySubListSelectorConfig == null ? "" : ", " + secondarySubListSelectorConfig) + ")";
    }
}

        super.inherit(inheritedConfig);
        this.minimumSubListSize =
                ConfigUtils.inheritOverwritableProperty(minimumSubListSize, inheritedConfig.minimumSubListSize);
        this.maximumSubListSize =
                ConfigUtils.inheritOverwritableProperty(maximumSubListSize, inheritedConfig.maximumSubListSize);
        this.selectReversingMoveToo =
                ConfigUtils.inheritOverwritableProperty(selectReversingMoveToo, inheritedConfig.selectReversingMoveToo);
        this.subListSelectorConfig =
                ConfigUtils.inheritOverwritableProperty(subListSelectorConfig, inheritedConfig.subListSelectorConfig);
        this.secondarySubListSelectorConfig =
                ConfigUtils.inheritOverwritableProperty(secondarySubListSelectorConfig,
                        inheritedConfig.secondarySubListSelectorConfig);
        return this;
    
<methods>public non-sealed void <init>() ,public void extractLeafMoveSelectorConfigsIntoList(List<MoveSelectorConfig#RAW>) ,public org.optaplanner.core.config.heuristic.selector.common.SelectionCacheType getCacheType() ,public Class<? extends SelectionFilter#RAW> getFilterClass() ,public java.lang.Double getFixedProbabilityWeight() ,public Class<? extends SelectionProbabilityWeightFactory#RAW> getProbabilityWeightFactoryClass() ,public java.lang.Long getSelectedCountLimit() ,public org.optaplanner.core.config.heuristic.selector.common.SelectionOrder getSelectionOrder() ,public Class<? extends SelectionSorter#RAW> getSorterClass() ,public Class<? extends Comparator#RAW> getSorterComparatorClass() ,public org.optaplanner.core.config.heuristic.selector.common.decorator.SelectionSorterOrder getSorterOrder() ,public Class<? extends SelectionSorterWeightFactory#RAW> getSorterWeightFactoryClass() ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListSwapMoveSelectorConfig inherit(org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListSwapMoveSelectorConfig) ,public void inheritFolded(MoveSelectorConfig<?>) ,public void setCacheType(org.optaplanner.core.config.heuristic.selector.common.SelectionCacheType) ,public void setFilterClass(Class<? extends SelectionFilter#RAW>) ,public void setFixedProbabilityWeight(java.lang.Double) ,public void setProbabilityWeightFactoryClass(Class<? extends SelectionProbabilityWeightFactory#RAW>) ,public void setSelectedCountLimit(java.lang.Long) ,public void setSelectionOrder(org.optaplanner.core.config.heuristic.selector.common.SelectionOrder) ,public void setSorterClass(Class<? extends SelectionSorter#RAW>) ,public void setSorterComparatorClass(Class<? extends Comparator#RAW>) ,public void setSorterOrder(org.optaplanner.core.config.heuristic.selector.common.decorator.SelectionSorterOrder) ,public void setSorterWeightFactoryClass(Class<? extends SelectionSorterWeightFactory#RAW>) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListSwapMoveSelectorConfig withCacheType(org.optaplanner.core.config.heuristic.selector.common.SelectionCacheType) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListSwapMoveSelectorConfig withFilterClass(Class<? extends SelectionFilter#RAW>) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListSwapMoveSelectorConfig withFixedProbabilityWeight(java.lang.Double) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListSwapMoveSelectorConfig withProbabilityWeightFactoryClass(Class<? extends SelectionProbabilityWeightFactory#RAW>) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListSwapMoveSelectorConfig withSelectedCountLimit(java.lang.Long) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListSwapMoveSelectorConfig withSelectionOrder(org.optaplanner.core.config.heuristic.selector.common.SelectionOrder) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListSwapMoveSelectorConfig withSorterClass(Class<? extends SelectionSorter#RAW>) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListSwapMoveSelectorConfig withSorterComparatorClass(Class<? extends Comparator#RAW>) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListSwapMoveSelectorConfig withSorterOrder(org.optaplanner.core.config.heuristic.selector.common.decorator.SelectionSorterOrder) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListSwapMoveSelectorConfig withSorterWeightFactoryClass(Class<? extends SelectionSorterWeightFactory#RAW>) <variables>protected org.optaplanner.core.config.heuristic.selector.common.SelectionCacheType cacheType,protected Class<? extends SelectionFilter#RAW> filterClass,private java.lang.Double fixedProbabilityWeight,protected Class<? extends SelectionProbabilityWeightFactory#RAW> probabilityWeightFactoryClass,protected java.lang.Long selectedCountLimit,protected org.optaplanner.core.config.heuristic.selector.common.SelectionOrder selectionOrder,protected Class<? extends SelectionSorter#RAW> sorterClass,protected Class<? extends Comparator#RAW> sorterComparatorClass,protected org.optaplanner.core.config.heuristic.selector.common.decorator.SelectionSorterOrder sorterOrder,protected Class<? extends SelectionSorterWeightFactory#RAW> sorterWeightFactoryClass