All but one of the calls to methodRequiresRestart use *md.getMethodName()* to get the method name. A quick recursive grep shows that *isDangerousMethod* is **always** called with *md.getMethodName()* as the second parameter. That seems a little redundant.

I took a close look at the use of the *MethodDescription(String methodName)* constructor. It is used...
* In ActivityApp where the new object is passed to *indexOf*
* In PManager.registerMethod where it is passed to *contains*
* In PManager.getRestricted where it is passed to *indexOf*

In short, they are short-lived utility objects.

So here is my suggestion.
* define *mMethods* as a map mapping ```restriction name``` **-->** ```list of method names```
* define *mMethodDetails* as a map mapping ```method name``` **-->** ```methodDescription object```

Then:
* *indexOf(method)* and *contains(method)* will work with strings, and may well be more efficient
* we can get rid of the bad constructor in *MethodDescription* and both *isDangerousMethod* and *methodRequiresRestart*

I think that will make the code generally a bit nicer.