public static <T> T reduce(Class<?> c , String m , T ... objects  ) {
		T [] para = (T[]) new Object[objects.length];
		ArrayList<Class> tp = getClassList(objects);
		List<Method> mlist = new ArrayList<Method>();
		
		for (Method tm :c.getDeclaredMethods()){
			if (tm.getName().equals(m) ){ mlist.add(tm); }
		}
		Method lm = null;
		boolean execabled = true;
		
		for ( Method tm : mlist){
			int pl = tm.getParameterTypes().length;
			int ol = objects.length;
			
			if ( pl == ol ){
				if ( f.isPair( tm.getParameterTypes(),tp ,true )){
					execabled = true;
					para = (T[]) f.pack(tm.getParameterTypes(),objects);
					lm = tm;
					break;
				}else{ execabled = false;continue;}
			}else{
				if ( f.isPair(tm.getParameterTypes(), tp ,false )){
					execabled = true;
					para = (T[]) f.pack(tm.getParameterTypes(),objects);
					lm = tm;
					break;
				}else{ execabled = false;continue;}
			}
		}
		if (execabled == true)
			return (T) f.invoke(lm,null,para);
		return null;
	}