private void load(Class<?> source, String name, Class<?>... parameterTypes) {
		if (source == null) {
			new Exception("Can not load method '" + name + "' because the class is null!").printStackTrace();
			return;
		}
		// try to find the field
		Class<?> tmp = source;
		while (tmp != null) {
			try {
				this.method = tmp.getDeclaredMethod(name, parameterTypes);
				this.method.setAccessible(true);
				return;
			} catch (NoSuchMethodException ex) {
				tmp = tmp.getSuperclass();
			} catch (SecurityException ex) {
				new Exception("No permission to access method '" + name + "' in class file '" + source.getSimpleName() + "'").printStackTrace();
				return;
			}
		}
		name += "(";
		for (int i = 0; i < parameterTypes.length; i++) {
			if (i > 0) {
				name += ", ";
			}
			name += parameterTypes[i].getSimpleName();
		}
		name += ")";
		new RuntimeException("Method not found in class '" + source.getName() + "': " + name).printStackTrace();
	}