@startuml class A as "App" { } interface I as "MyInterface" { someMethod(args) otherMethods(args) } class P as "Proxy" <> { {static} DynamicProxy newProxyInstance(\n classLoader,\n interfaces,\n invocationHandler\n) } class D as "DynamicProxy" { someMethod(args) otherMethods(args) } class H as "InvocationHandler" { invoke(proxy, method, args) } class X as "AuxiliarProcessor" { process(method, args) } A -r-> D I <|.. D : implements D -r-> H : delegate H -r-> X : (optional) @enduml