if(Modifier.isPublic(method.getModifiers()) && !Modifier.isStatic(method.getModifiers())) {
if(Modifier.isPublic(method.getModifiers())) {
	public void addMethod(Method method) {		if(Modifier.isPublic(method.getModifiers()) &&			!Modifier.isStatic(method.getModifiers())) {			String name = ClassHelper.getTruncatedName(method.getName());			Class retType = method.getReturnType();			Class[] params = method.getParameterTypes();			boolean isVoid = retType.equals(java.lang.Void.TYPE);			Class methodClass = method.getDeclaringClass();						/* Accepts the method for examination if no stop class is given or the method is declared in a subclass of the stop class.			 * The rules for this are described in {@link java.beans.Introspector.getBeanInfo(Class, Class)}.			 * This block finds out whether the method is a suitable getter or setter method (or read/write method).  			 */			if(isReachable(propertyStopClass, methodClass)) {				/* At this point a method may regarded as a property's read or write method if its name				 * starts with "is", "get" or "set". However, if a method is static it cannot be part				 * of a property.				 */				if(Modifier.isStatic(method.getModifiers())) {					// files method as other because it is static					otherMethods.addElement(method);				} else if(name.startsWith("is")				   && retType.equals(java.lang.Boolean.TYPE)				   && params.length == 0) {				   	// files method as boolean "is" style getter					addToPropertyHash(name,method,IS);				} else if(name.startsWith("get") && !isVoid) {					if(params.length == 0) {						// files as legal non-argument getter						addToPropertyHash(name,method,GET);					} else if(params.length == 1 && params[0].equals(java.lang.Integer.TYPE)) {						// files as legal indiced getter						addToPropertyHash(name,method,GET_I);					} else {						// files as other because the method's signature is not Bean-like						otherMethods.addElement(method);					}				} else if(name.startsWith("set") && isVoid) {					if(params.length == 1) {						// files as legal single-argument setter method						addToPropertyHash(name,method,SET);					} else if(params.length == 2 && params[0].equals(java.lang.Integer.TYPE)) {						// files as legal indiced setter method						addToPropertyHash(name,method,SET_I);					} else {						// files as other because the method's signature is not Bean-like						otherMethods.addElement(method);					}				}			}						if(isReachable(eventStopClass, methodClass)) {				if(name.startsWith("add")				          && isVoid				          && params.length == 1				          && java.util.EventListener.class.isAssignableFrom(params[0])) {					addToListenerHash(name,method,ADD);				} else if(name.startsWith("remove")				          && isVoid				          && params.length == 1				          && java.util.EventListener.class.isAssignableFrom(params[0])) {					addToListenerHash(name,method,REMOVE);				}			}			 			if(isReachable(methodStopClass, methodClass)) {				// files as reachable public method				otherMethods.addElement(method);			}					}	}