class SubListChangeMoveSelectorConfig extends MoveSelectorConfig<SubListChangeMoveSelectorConfig> {

    public static final String XML_ELEMENT_NAME = "subListChangeMoveSelector";

    /**
     * @deprecated The minimumSubListSize on the SubListChangeMoveSelectorConfig 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 SubListChangeMoveSelectorConfig 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 = "destinationSelector")
    private DestinationSelectorConfig destinationSelectorConfig = null;

    /**
     * @deprecated The minimumSubListSize on the SubListChangeMoveSelectorConfig 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 SubListChangeMoveSelectorConfig 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 SubListChangeMoveSelectorConfig 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 SubListChangeMoveSelectorConfig 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 DestinationSelectorConfig getDestinationSelectorConfig() {
        return destinationSelectorConfig;
    }

    public void setDestinationSelectorConfig(DestinationSelectorConfig destinationSelectorConfig) {
        this.destinationSelectorConfig = destinationSelectorConfig;
    }

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

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

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

    public SubListChangeMoveSelectorConfig withDestinationSelectorConfig(DestinationSelectorConfig destinationSelectorConfig) {
        this.setDestinationSelectorConfig(destinationSelectorConfig);
        return this;
    }

    // ************************************************************************
    // Builder methods
    // ************************************************************************

    @Override
    public SubListChangeMoveSelectorConfig inherit(SubListChangeMoveSelectorConfig inheritedConfig) {
        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.destinationSelectorConfig =
                ConfigUtils.inheritOverwritableProperty(destinationSelectorConfig, inheritedConfig.destinationSelectorConfig);
        return this;
    }

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

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

    @Override
    public String toString() {<FILL_FUNCTION_BODY>}
}

        return getClass().getSimpleName() + "(" + subListSelectorConfig + ", " + destinationSelectorConfig + ")";
    
<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.SubListChangeMoveSelectorConfig inherit(org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListChangeMoveSelectorConfig) ,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.SubListChangeMoveSelectorConfig withCacheType(org.optaplanner.core.config.heuristic.selector.common.SelectionCacheType) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListChangeMoveSelectorConfig withFilterClass(Class<? extends SelectionFilter#RAW>) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListChangeMoveSelectorConfig withFixedProbabilityWeight(java.lang.Double) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListChangeMoveSelectorConfig withProbabilityWeightFactoryClass(Class<? extends SelectionProbabilityWeightFactory#RAW>) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListChangeMoveSelectorConfig withSelectedCountLimit(java.lang.Long) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListChangeMoveSelectorConfig withSelectionOrder(org.optaplanner.core.config.heuristic.selector.common.SelectionOrder) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListChangeMoveSelectorConfig withSorterClass(Class<? extends SelectionSorter#RAW>) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListChangeMoveSelectorConfig withSorterComparatorClass(Class<? extends Comparator#RAW>) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListChangeMoveSelectorConfig withSorterOrder(org.optaplanner.core.config.heuristic.selector.common.decorator.SelectionSorterOrder) ,public org.optaplanner.core.config.heuristic.selector.move.generic.list.SubListChangeMoveSelectorConfig 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