@startuml
hide empty members

skinparam class {
  BackgroundColor white
  ArrowColor black
  BorderColor darkGray
}

class behavior1 as "TInvocable" << (T,lightGrey) >> {
}

class behavior2 as "TInvocationsReceiver" << (T,lightGrey) >> {
}

class behavior3 as "TWithInvocations" << (T,lightGrey) >> {
}

class behavior4 as "TInvocation" << (T,lightGrey) >> {
}


behavior1 "candidates * " -[#black]- "incomingInvocations * " behavior4
behavior4 "outgoingInvocations * " -[#black]- "sender  " behavior3
behavior4 "receivingInvocations * " -[#black]- "receiver  " behavior2

@enduml
