// Path: src/main/java/preprocessor/ParsingPreprocessor.java
// static class QuantifiableOperator extends RegexOperator {
// 
// 	public enum Quantifier {
// 		GREEDY, POSSESIVE, RELUCTANT
// 	}
// 
// 	private Quantifier quantifier;
// 	public Quantifier getOperatorQuantifier() {
// 		return quantifier;
// 	}
// 
// 	public QuantifiableOperator(String operatorSequence, OperatorType operatorType, Quantifier quantifier) {
// 		super(operatorSequence, operatorType);
// 			
// 		this.quantifier = quantifier;
// 	}
// 		
// 	public QuantifiableOperator(String operatorSequence, OperatorType operatorType) {
// 		super(operatorSequence, operatorType);
// 			
// 		this.quantifier = Quantifier.GREEDY;
// 	}
// 		
// 	@Override
// 	public boolean getIsQuantifiable() {
// 		return true;
// 	}
// 
// 	public void setOperatorQuantifier(Quantifier quantifier) {
// 		this.quantifier = quantifier;
// 	}
// 		
// 	@Override
// 	public String toString() {
// 		String q = "";
// 		switch (quantifier) {
// 		case GREEDY:
// 			q = "G";
// 			break;
// 		case POSSESIVE:
// 			q = "P";
// 			break;
// 		case RELUCTANT:
// 			q = "R";
// 			break;
// 		}
// 		return q + "QO( " + operatorSequence + " )";
// 	}
// 
// }
// 
// Path: src/main/java/preprocessor/ParsingPreprocessor.java
// static class RegexOperator implements RegexToken {
// 
// 	protected final String operatorSequence;
// 
// 	public String getOperator() {
// 		return operatorSequence;
// 	}
// 
// 	public RegexOperator(String operatorSequence, OperatorType operatorType) {
// 		this.operatorSequence = operatorSequence;
// 		this.operatorType = operatorType;
// 	}
// 
// 	public boolean getIsQuantifiable() {
// 		return false;
// 	}
// 
// 	public enum OperatorType {
// 		PLUS, STAR, QM, COUNT, OR
// 	}
// 
// 	private final OperatorType operatorType;
// 	public OperatorType getOperatorType() {
// 		return operatorType;
// 	}
// 		
// 	@Override
// 	public TokenType getTokenType() {
// 		return TokenType.REGEX_OPERATOR;
// 	}
// 		
// 	@Override
// 	public String toString() {
// 		return "O( " + operatorSequence + " )";
// 	}
// 
// 	@Override
// 	public String getRepresentation() {
// 		return operatorSequence;
// 	}
// 		
// 	@Override
// 	public boolean equals(Object o) {
// 		if (o == null) {
// 			return false;
// 		}
// 			
// 		if (o == this) {
// 			return true;
// 		}
// 			
// 		if (!(o instanceof RegexOperator)) {
// 			return false;
// 		}
// 			
// 		RegexOperator ro = (RegexOperator) o;
// 		return ro.operatorSequence.equals(operatorSequence);
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return operatorSequence.hashCode();
// 	}
// }
// 
// Path: src/main/java/preprocessor/ParsingPreprocessor.java
// static interface RegexToken {
// 
// 	public enum TokenType {
// 		REGEX_FACTOR, REGEX_OPERATOR
// 	}
// 
// 	public TokenType getTokenType();
// 		
// 	public String getRepresentation();
// 
// }
// 
// Path: src/main/java/preprocessor/ParsingPreprocessor.java
// public enum OperatorType {
// 	PLUS, STAR, QM, COUNT, OR
// }


import preprocessor.ParsingPreprocessor.QuantifiableOperator;
import preprocessor.ParsingPreprocessor.RegexOperator;
import preprocessor.ParsingPreprocessor.RegexToken;
import preprocessor.ParsingPreprocessor.RegexOperator.OperatorType;
package preprocessor;


public class PlusOperatorExpansion extends OperatorExpansionRule {

	@Override
// Path: src/main/java/preprocessor/ParsingPreprocessor.java
// static class QuantifiableOperator extends RegexOperator {
// 
// 	public enum Quantifier {
// 		GREEDY, POSSESIVE, RELUCTANT
// 	}
// 
// 	private Quantifier quantifier;
// 	public Quantifier getOperatorQuantifier() {
// 		return quantifier;
// 	}
// 
// 	public QuantifiableOperator(String operatorSequence, OperatorType operatorType, Quantifier quantifier) {
// 		super(operatorSequence, operatorType);
// 			
// 		this.quantifier = quantifier;
// 	}
// 		
// 	public QuantifiableOperator(String operatorSequence, OperatorType operatorType) {
// 		super(operatorSequence, operatorType);
// 			
// 		this.quantifier = Quantifier.GREEDY;
// 	}
// 		
// 	@Override
// 	public boolean getIsQuantifiable() {
// 		return true;
// 	}
// 
// 	public void setOperatorQuantifier(Quantifier quantifier) {
// 		this.quantifier = quantifier;
// 	}
// 		
// 	@Override
// 	public String toString() {
// 		String q = "";
// 		switch (quantifier) {
// 		case GREEDY:
// 			q = "G";
// 			break;
// 		case POSSESIVE:
// 			q = "P";
// 			break;
// 		case RELUCTANT:
// 			q = "R";
// 			break;
// 		}
// 		return q + "QO( " + operatorSequence + " )";
// 	}
// 
// }
// 
// Path: src/main/java/preprocessor/ParsingPreprocessor.java
// static class RegexOperator implements RegexToken {
// 
// 	protected final String operatorSequence;
// 
// 	public String getOperator() {
// 		return operatorSequence;
// 	}
// 
// 	public RegexOperator(String operatorSequence, OperatorType operatorType) {
// 		this.operatorSequence = operatorSequence;
// 		this.operatorType = operatorType;
// 	}
// 
// 	public boolean getIsQuantifiable() {
// 		return false;
// 	}
// 
// 	public enum OperatorType {
// 		PLUS, STAR, QM, COUNT, OR
// 	}
// 
// 	private final OperatorType operatorType;
// 	public OperatorType getOperatorType() {
// 		return operatorType;
// 	}
// 		
// 	@Override
// 	public TokenType getTokenType() {
// 		return TokenType.REGEX_OPERATOR;
// 	}
// 		
// 	@Override
// 	public String toString() {
// 		return "O( " + operatorSequence + " )";
// 	}
// 
// 	@Override
// 	public String getRepresentation() {
// 		return operatorSequence;
// 	}
// 		
// 	@Override
// 	public boolean equals(Object o) {
// 		if (o == null) {
// 			return false;
// 		}
// 			
// 		if (o == this) {
// 			return true;
// 		}
// 			
// 		if (!(o instanceof RegexOperator)) {
// 			return false;
// 		}
// 			
// 		RegexOperator ro = (RegexOperator) o;
// 		return ro.operatorSequence.equals(operatorSequence);
// 	}
// 
// 	@Override
// 	public int hashCode() {
// 		return operatorSequence.hashCode();
// 	}
// }
// 
// Path: src/main/java/preprocessor/ParsingPreprocessor.java
// static interface RegexToken {
// 
// 	public enum TokenType {
// 		REGEX_FACTOR, REGEX_OPERATOR
// 	}
// 
// 	public TokenType getTokenType();
// 		
// 	public String getRepresentation();
// 
// }
// 
// Path: src/main/java/preprocessor/ParsingPreprocessor.java
// public enum OperatorType {
// 	PLUS, STAR, QM, COUNT, OR
// }


// Path: src/main/java/preprocessor/PlusOperatorExpansion.java
import preprocessor.ParsingPreprocessor.QuantifiableOperator;
import preprocessor.ParsingPreprocessor.RegexOperator;
import preprocessor.ParsingPreprocessor.RegexToken;
import preprocessor.ParsingPreprocessor.RegexOperator.OperatorType;

package preprocessor;


public class PlusOperatorExpansion extends OperatorExpansionRule {

	@Override
	protected void expandOperator(StringBuilder resultBuilder, RegexToken factor, RegexToken operator) {