@startuml
class AttributeAccessInterface {
  mEndpointId : Optional<EndpointId>
  mClusterId : ClusterId
  Read(...)
  Write(...)
}

class CommandHandlerInterface {
  InvokeCommand(...)
}

class ClusterServer {
  Read(...)
  Write(...)
  InvokeCommand(...)
  RegisterEndpoint(...)
  mEndpoints: ClusterLogic[]
}

class MatterContext {
  LogEvent()
  MarkAttributeDirty()
  mPersistentStorageDelegate
  mOtherFakeableThings
}

class ClusterLogic {
  Init(...)
  GetXAttribute(...)
  SetXAttribute(...)
  HandleXCommand(...)
  mStateVariables
}

class ClusterDriver {
  OnClusterStateChange(...)
  RegisterListener(...)
  mListener
}

AttributeAccessInterface  <|-- ClusterServer
CommandHandlerInterface <|-- ClusterServer
ClusterServer "1" *-- "Many" ClusterLogic
ClusterLogic "1" *-- "1" ClusterDriver
ClusterLogic "1" *-- "1" MatterContext

hide ClusterServer members
hide AttributeAccessInterface members
hide CommandHandlerInterface members
hide ClusterLogic members
hide ClusterDriver members
hide MatterContext members

@enduml
