@startuml
class Ability {
    + Id : int <<get>> <<set>>
    + Name : string <<get>> <<set>>
    + Description : string <<get>> <<set>>
    + AddCastBlocker(blocker:CastBlocker) : void
    + RemoveCastBlocker(blocker:CastBlocker) : void
    +  <<event>> OnCastBlockerAdded : Constants.delVoidInputCastBlocker 
    +  <<event>> OnCastBlockerRemoved : Constants.delVoidInputCastBlocker 
    + Ability(id:int, name:string, destription:string, abilityConfiguration:AbilityConfiguration)
    + Ability(id:int, name:string, destription:string, abilityCourse:AbilityCourse)
    + Ability(ability:Ability)
    + Cast(sender:EntityAdapter) : void
    + IClone() : ICloneable
    + Clone() : Ability
}
class "List`1"<T> {
}
ICloneable <|-- Ability
Ability --> "AbilityConfiguration" AbilityConfiguration
Ability --> "castBlockers<CastBlocker>" "List`1"
@enduml
