import java.util.Enumeration;

public class ListenerList {

ListenerList next = null;
Object listener = null;

static class ListenerListEnumeration implements Enumeration {
	ListenerList ll;

	ListenerListEnumeration(ListenerList ll) {
		this.ll = ll;
	}

	public boolean hasMoreElements() {
		if(ll == null)
			return false;
		else
			return true;
	}

	public Object nextElement() {
		if(ll == null)
			return null;

		ListenerList l = ll;
		ll = ll.next;
		return l.listener;
	}
}

private ListenerList(ListenerList list, Object l) {
	next = list; listener = l;
}

public static ListenerList add(ListenerList list, Object newListener) {
	return new ListenerList(list,newListener);
}

public static ListenerList remove(ListenerList list, Object oldListener) {
	ListenerList newList = null;
	if(list == null) return null;

	while(list != null) {
		if(list.listener != oldListener)
			newList = add(newList,list.listener);
		list = list.next;
	}
	return newList;
}

public static Enumeration elements(ListenerList list)  {
	return new ListenerListEnumeration(list);
}

}
