public static String getSignature(Method method) {
		StringBuilder builder = new StringBuilder(128);

		int modifiers = method.getModifiers();

		if (Modifier.isPublic(modifiers))
			builder.append("public ");
		if (Modifier.isPrivate(modifiers))
			builder.append("private ");
		if (Modifier.isProtected(modifiers))
			builder.append("protected ");
		if (Modifier.isStatic(modifiers))
			builder.append("static ");
		if (Modifier.isSynchronized(modifiers))
			builder.append("synchronized ");

		builder.append(method.getReturnType());
		builder.append(' ');
		builder.append(method.getDeclaringClass());
		builder.append('.');
		builder.append(method.getName());
		builder.append('(');

		Class<?>[] parameterTypes = method.getParameterTypes();
		boolean first = true;

		for (Class<?> param : parameterTypes) {
			if (!first)
				builder.append(", ");

			builder.append(param.getName());
			first = false;
		}

		builder.append(')');

		return builder.toString();
	}