// Path: src/main/java/io/github/reggert/reb4j/Quantified.java
// public static enum Mode
// {
// 	GREEDY(LazyString.empty),
// 	RELUCTANT(LazyString.str("?")),
// 	POSSESSIVE(LazyString.str("+"));
// 		
// 	public final LazyString symbol;
// 		
// 	private Mode(final LazyString symbol)
// 	{this.symbol = symbol;}
// }


import io.github.reggert.reb4j.Quantified.Mode;
package io.github.reggert.reb4j;


/**
 * Extension to {@link AbstractSequenceableAlternative} providing
 * the canonical implementation of {@link Quantifiable}. 
 * 
 * Note that it delegates to static methods of {@link Quantified}.
 */
public abstract class AbstractQuantifiableSequenceableAlternative 
	extends AbstractSequenceableAlternative implements Quantifiable
{
	private static final long serialVersionUID = 1L;

	@Override
	public final Quantified.AnyTimes anyTimes(final Mode mode)
	{return new Quantified.AnyTimes(this, mode);}
	
	@Override
	public final Quantified.AnyTimes anyTimes()
	{return anyTimes(Mode.GREEDY);}

	@Override
	@Deprecated
	public final Quantified.AnyTimes anyTimesReluctantly()
	{return anyTimes(Mode.RELUCTANT);}

	@Override
	@Deprecated
	public final Quantified.AnyTimes anyTimesPossessively()
	{return anyTimes(Mode.POSSESSIVE);}

	@Override
	public final Quantified.AtLeastOnce atLeastOnce(final Mode mode)
	{return new Quantified.AtLeastOnce(this, mode);}
	
// Path: src/main/java/io/github/reggert/reb4j/Quantified.java
// public static enum Mode
// {
// 	GREEDY(LazyString.empty),
// 	RELUCTANT(LazyString.str("?")),
// 	POSSESSIVE(LazyString.str("+"));
// 		
// 	public final LazyString symbol;
// 		
// 	private Mode(final LazyString symbol)
// 	{this.symbol = symbol;}
// }


// Path: src/main/java/io/github/reggert/reb4j/AbstractQuantifiableSequenceableAlternative.java
import io.github.reggert.reb4j.Quantified.Mode;

package io.github.reggert.reb4j;


/**
 * Extension to {@link AbstractSequenceableAlternative} providing
 * the canonical implementation of {@link Quantifiable}. 
 * 
 * Note that it delegates to static methods of {@link Quantified}.
 */
public abstract class AbstractQuantifiableSequenceableAlternative 
	extends AbstractSequenceableAlternative implements Quantifiable
{
	private static final long serialVersionUID = 1L;

	@Override
	public final Quantified.AnyTimes anyTimes(final Mode mode)
	{return new Quantified.AnyTimes(this, mode);}
	
	@Override
	public final Quantified.AnyTimes anyTimes()
	{return anyTimes(Mode.GREEDY);}

	@Override
	@Deprecated
	public final Quantified.AnyTimes anyTimesReluctantly()
	{return anyTimes(Mode.RELUCTANT);}

	@Override
	@Deprecated
	public final Quantified.AnyTimes anyTimesPossessively()
	{return anyTimes(Mode.POSSESSIVE);}

	@Override
	public final Quantified.AtLeastOnce atLeastOnce(final Mode mode)
	{return new Quantified.AtLeastOnce(this, mode);}
	
	@Override