// build operationName->operationInfo map
MBeanOperationInfo[] operationInfos = info.getOperations();
Map operations = new HashMap(operationInfos.length);
for (int i = 0; i < operationInfos.length; i++) {
MBeanOperationInfo operationInfo = operationInfos[i];
operations.put(new MBeanOperationSignature(operationInfo), operationInfo);
}
// build the method lookup table
FastClass fastClass = FastClass.create(proxyType);
InvokeMBean[] methodTable = new InvokeMBean[fastClass.getMaxIndex() + 1];
Method[] methods = proxyType.getMethods();
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
int index = getSuperIndex(proxyType, method);
if (index >= 0) {
if (operations.containsKey(new MBeanOperationSignature(method))) {
methodTable[index] = new InvokeMBean(method, false, false);
} else if (method.getName().startsWith("get") && attributes.containsKey(method.getName().substring(3))) {
methodTable[index] = new InvokeMBean(method, true, true);
} else if (method.getName().startsWith("is") && attributes.containsKey(method.getName().substring(2))) {
methodTable[index] = new InvokeMBean(method, true, true);