class PillarChangeMoveSelectorConfig extends AbstractPillarMoveSelectorConfig<PillarChangeMoveSelectorConfig> {

    public static final String XML_ELEMENT_NAME = "pillarChangeMoveSelector";

    @XmlElement(name = "valueSelector")
    private ValueSelectorConfig valueSelectorConfig = null;

    public ValueSelectorConfig getValueSelectorConfig() {
        return valueSelectorConfig;
    }

    public void setValueSelectorConfig(ValueSelectorConfig valueSelectorConfig) {
        this.valueSelectorConfig = valueSelectorConfig;
    }

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

    public PillarChangeMoveSelectorConfig withValueSelectorConfig(ValueSelectorConfig valueSelectorConfig) {
        this.setValueSelectorConfig(valueSelectorConfig);
        return this;
    }

    @Override
    public PillarChangeMoveSelectorConfig inherit(PillarChangeMoveSelectorConfig inheritedConfig) {
        super.inherit(inheritedConfig);
        valueSelectorConfig = ConfigUtils.inheritConfig(valueSelectorConfig, inheritedConfig.getValueSelectorConfig());
        return this;
    }

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

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

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

}

        return getClass().getSimpleName() + "(" + pillarSelectorConfig + ", " + valueSelectorConfig + ")";
    
<methods>public non-sealed void <init>() ,public org.optaplanner.core.config.heuristic.selector.entity.pillar.PillarSelectorConfig getPillarSelectorConfig() ,public Class<? extends Comparator#RAW> getSubPillarSequenceComparatorClass() ,public org.optaplanner.core.config.heuristic.selector.move.generic.SubPillarType getSubPillarType() ,public org.optaplanner.core.config.heuristic.selector.move.generic.PillarChangeMoveSelectorConfig inherit(org.optaplanner.core.config.heuristic.selector.move.generic.PillarChangeMoveSelectorConfig) ,public void setPillarSelectorConfig(org.optaplanner.core.config.heuristic.selector.entity.pillar.PillarSelectorConfig) ,public void setSubPillarSequenceComparatorClass(Class<? extends Comparator#RAW>) ,public void setSubPillarType(org.optaplanner.core.config.heuristic.selector.move.generic.SubPillarType) ,public org.optaplanner.core.config.heuristic.selector.move.generic.PillarChangeMoveSelectorConfig withPillarSelectorConfig(org.optaplanner.core.config.heuristic.selector.entity.pillar.PillarSelectorConfig) ,public org.optaplanner.core.config.heuristic.selector.move.generic.PillarChangeMoveSelectorConfig withSubPillarSequenceComparatorClass(Class<? extends Comparator#RAW>) ,public org.optaplanner.core.config.heuristic.selector.move.generic.PillarChangeMoveSelectorConfig withSubPillarType(org.optaplanner.core.config.heuristic.selector.move.generic.SubPillarType) <variables>protected org.optaplanner.core.config.heuristic.selector.entity.pillar.PillarSelectorConfig pillarSelectorConfig,protected Class<? extends Comparator#RAW> subPillarSequenceComparatorClass,protected org.optaplanner.core.config.heuristic.selector.move.generic.SubPillarType subPillarType