@startuml class org.accordproject.templatemark.ElementDefinition { + String name + String elementType } org.accordproject.templatemark.ElementDefinition --|> org.accordproject.commonmark.Child class org.accordproject.templatemark.VariableDefinition { + String identifiedBy } org.accordproject.templatemark.VariableDefinition --|> org.accordproject.templatemark.ElementDefinition class org.accordproject.templatemark.FormattedVariableDefinition { + String format } org.accordproject.templatemark.FormattedVariableDefinition --|> org.accordproject.templatemark.VariableDefinition class org.accordproject.templatemark.EnumVariableDefinition { + String[] enumValues } org.accordproject.templatemark.EnumVariableDefinition --|> org.accordproject.templatemark.VariableDefinition class org.accordproject.templatemark.FormulaDefinition { + String[] dependencies + String code } org.accordproject.templatemark.FormulaDefinition --|> org.accordproject.templatemark.ElementDefinition class org.accordproject.templatemark.BlockDefinition { } org.accordproject.templatemark.BlockDefinition --|> org.accordproject.templatemark.ElementDefinition class org.accordproject.templatemark.ClauseDefinition { } org.accordproject.templatemark.ClauseDefinition --|> org.accordproject.templatemark.BlockDefinition class org.accordproject.templatemark.ContractDefinition { } org.accordproject.templatemark.ContractDefinition --|> org.accordproject.templatemark.BlockDefinition class org.accordproject.templatemark.WithDefinition { } org.accordproject.templatemark.WithDefinition --|> org.accordproject.templatemark.BlockDefinition class org.accordproject.templatemark.ConditionalDefinition { + Child[] whenTrue + Child[] whenFalse } org.accordproject.templatemark.ConditionalDefinition --|> org.accordproject.templatemark.BlockDefinition class org.accordproject.templatemark.OptionalDefinition { + Child[] whenSome + Child[] whenNone } org.accordproject.templatemark.OptionalDefinition --|> org.accordproject.templatemark.BlockDefinition class org.accordproject.templatemark.ListBlockDefinition { + String type + String tight + String start + String delimiter } org.accordproject.templatemark.ListBlockDefinition --|> org.accordproject.templatemark.BlockDefinition class org.accordproject.templatemark.JoinDefinition { + String separator } org.accordproject.templatemark.JoinDefinition --|> org.accordproject.templatemark.BlockDefinition @enduml