// Path: src/main/java/org/wmaop/aop/advice/remit/Remit.java
// public interface Remit {
// 	boolean isApplicable();
// 	boolean isApplicable(Scope scope);
// }
// 
// Path: src/main/java/org/wmaop/aop/interceptor/CompositeInterceptor.java
// public interface CompositeInterceptor extends Interceptor {
// 
// 	<T extends Interceptor> List<T> getInterceptorsOfType(Class<T> type);
// 	
// 	List<Interceptor> getInterceptors();
// }
// 
// Path: src/main/java/org/wmaop/aop/interceptor/InterceptPoint.java
// public enum InterceptPoint {
// 		BEFORE,INVOKE,AFTER;
// 
// }
// 
// Path: src/main/java/org/wmaop/aop/interceptor/Interceptor.java
// public interface Interceptor {
// 
// 	InterceptResult intercept(FlowPosition flowPosition, IData idata);
// 
// 	int getInvokeCount();
// 
// 	String getName();
// 
// 	Map<String, Object> toMap();
// 
// }


import static org.wmaop.aop.advice.AdviceState.DISPOSED;
import static org.wmaop.aop.advice.AdviceState.ENABLED;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Observable;
import org.wmaop.aop.advice.remit.Remit;
import org.wmaop.aop.interceptor.CompositeInterceptor;
import org.wmaop.aop.interceptor.InterceptPoint;
import org.wmaop.aop.interceptor.Interceptor;
import org.wmaop.util.logger.Logger;
			}
		}
		idAdvice.remove(advice.getId());
		advice.setAdviceState(DISPOSED);
		notify(advice);
	}

	public void clearAdvice() {
		for (List<Advice> advs : advices.values()) {
			List<Advice> advCopy = new ArrayList<>(advs);
			for (Advice adv : advCopy) {
				unregisterAdvice(adv);
			}
		}
		logger.info("Cleared all Advice");
	}

	public Advice getAdvice(String id) {
		return idAdvice.get(id);
	}

	public List<Advice> listAdvice() {
		List<Advice> list = new ArrayList<>();
		for (List<Advice> adv : advices.values()) {
			list.addAll(adv);
		}
		return list;
	}

	public void reset(Scope scope) {
// Path: src/main/java/org/wmaop/aop/advice/remit/Remit.java
// public interface Remit {
// 	boolean isApplicable();
// 	boolean isApplicable(Scope scope);
// }
// 
// Path: src/main/java/org/wmaop/aop/interceptor/CompositeInterceptor.java
// public interface CompositeInterceptor extends Interceptor {
// 
// 	<T extends Interceptor> List<T> getInterceptorsOfType(Class<T> type);
// 	
// 	List<Interceptor> getInterceptors();
// }
// 
// Path: src/main/java/org/wmaop/aop/interceptor/InterceptPoint.java
// public enum InterceptPoint {
// 		BEFORE,INVOKE,AFTER;
// 
// }
// 
// Path: src/main/java/org/wmaop/aop/interceptor/Interceptor.java
// public interface Interceptor {
// 
// 	InterceptResult intercept(FlowPosition flowPosition, IData idata);
// 
// 	int getInvokeCount();
// 
// 	String getName();
// 
// 	Map<String, Object> toMap();
// 
// }


// Path: src/main/java/org/wmaop/aop/advice/AdviceManager.java
import static org.wmaop.aop.advice.AdviceState.DISPOSED;
import static org.wmaop.aop.advice.AdviceState.ENABLED;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Observable;
import org.wmaop.aop.advice.remit.Remit;
import org.wmaop.aop.interceptor.CompositeInterceptor;
import org.wmaop.aop.interceptor.InterceptPoint;
import org.wmaop.aop.interceptor.Interceptor;
import org.wmaop.util.logger.Logger;

			}
		}
		idAdvice.remove(advice.getId());
		advice.setAdviceState(DISPOSED);
		notify(advice);
	}

	public void clearAdvice() {
		for (List<Advice> advs : advices.values()) {
			List<Advice> advCopy = new ArrayList<>(advs);
			for (Advice adv : advCopy) {
				unregisterAdvice(adv);
			}
		}
		logger.info("Cleared all Advice");
	}

	public Advice getAdvice(String id) {
		return idAdvice.get(id);
	}

	public List<Advice> listAdvice() {
		List<Advice> list = new ArrayList<>();
		for (List<Advice> adv : advices.values()) {
			list.addAll(adv);
		}
		return list;
	}

	public void reset(Scope scope) {
		if (scope == Scope.ALL) {