static Object newProxyInstance(DistributedMember member, Region<String, Object> monitoringRegion,
      ObjectName objectName, FederationComponent federationComponent, Class interfaceClass) {
    boolean isMXBean = JMX.isMXBeanInterface(interfaceClass);
    boolean notificationBroadcaster = federationComponent.isNotificationEmitter();

    InvocationHandler invocationHandler =
        new MBeanProxyInvocationHandler(member, objectName, monitoringRegion, isMXBean);

    Class[] interfaces;
    if (notificationBroadcaster) {
      interfaces =
          new Class[] {interfaceClass, ProxyInterface.class, NotificationBroadCasterProxy.class};
    } else {
      interfaces = new Class[] {interfaceClass, ProxyInterface.class};
    }

    Object proxy = Proxy.newProxyInstance(MBeanProxyInvocationHandler.class.getClassLoader(),
        interfaces, invocationHandler);

    return interfaceClass.cast(proxy);
  }
This class is the proxy handler for all the proxies created for federated MBeans. Its designed
with Java proxy mechanism. All data calls are delegated to the federation components. All method
calls are routed to specified members via Function service
geode-core/src/main/java/org/apache/geode/management/internal/MBeanProxyInvocationHandler.java