private Method[] findAllMethods(Class<?> c) {
		Class<?> classToSurvey = c;

		ArrayList<Method> list = new ArrayList<Method>();
		// While we have a class to examine
		while (classToSurvey != null && classToSurvey != Object.class) {
			// Get all public and private methods
			Method[] allMethods = classToSurvey.getDeclaredMethods();
			// For each method, set it to accessible and add it to the list
			for (Method m : allMethods) {
				Reflector.ensureIsAccessible(m);
				list.add(m);
			}

			// Get the super class and loop
			classToSurvey = classToSurvey.getSuperclass();
		}

		// Convert the ArrayList to an array and return
		return list.toArray(new Method[0]);
	}