// Path: src/com/iconmaster/source/exception/SourceException.java
// public class SourceException extends Exception {
// 	private final Range range;
// 	
// 	public SourceException(Range range) {
// 		super(range.toString()+": Unknown Source exception");
// 		this.range = range;
// 	}
// 	
// 	public SourceException(Range range, String message) {
// 		super((range==null?"null: ":range.toString()+": ")+message);
// 		this.range = range;
// 	}
// 	
// 	@Override
// 	public String getMessage() {
// 		return super.getMessage();
// 	}
// 	
// 	public Range getRange() {
// 		return range;
// 	}
// }


import com.iconmaster.source.exception.SourceException;
import java.util.ArrayList;
package com.iconmaster.source.element;


/**
 *
 * @author iconmaster
 */
public interface ISpecialRule {
	public class RuleResult {
		public Element ret;
		public int del;

		public RuleResult(Element ret, int del) {
			this.ret = ret;
			this.del = del;
		}		
	}
	
// Path: src/com/iconmaster/source/exception/SourceException.java
// public class SourceException extends Exception {
// 	private final Range range;
// 	
// 	public SourceException(Range range) {
// 		super(range.toString()+": Unknown Source exception");
// 		this.range = range;
// 	}
// 	
// 	public SourceException(Range range, String message) {
// 		super((range==null?"null: ":range.toString()+": ")+message);
// 		this.range = range;
// 	}
// 	
// 	@Override
// 	public String getMessage() {
// 		return super.getMessage();
// 	}
// 	
// 	public Range getRange() {
// 		return range;
// 	}
// }


// Path: src/com/iconmaster/source/element/ISpecialRule.java
import com.iconmaster.source.exception.SourceException;
import java.util.ArrayList;

package com.iconmaster.source.element;


/**
 *
 * @author iconmaster
 */
public interface ISpecialRule {
	public class RuleResult {
		public Element ret;
		public int del;

		public RuleResult(Element ret, int del) {
			this.ret = ret;
			this.del = del;
		}		
	}
	
	public RuleResult match(ArrayList<Element> a, int i) throws SourceException;