I have a UML 2.5 class diagram with a lot of composition relationships.
I'm tying to implement them in Kotlin (I am new in Kotlin sorry):
class RuleScenarioState (val description : String){
    var action: RuleStateAction? = null
    var stateType : ScenarioStateType? = null
    var completeCriteria : StateCompleteCriteria? = null
    private class ComplexCompleteCriteria private constructor(val customCriteriaImplementation : String): StateCompleteCriteria()  {
    }
    private class ExpressionCompleteCriteria private constructor(val expression : RegulationExpression): StateCompleteCriteria() {
    }
    private class RegulationNodeCompleteCriteria   private constructor(val regulationNodeTreeId : UUID):  StateCompleteCriteria() {
    }
    private class CustomCompleteCriteria  private constructor(val customCriteriaImplementation : String): StateCompleteCriteria() {
    }
    private class CustomRuleStateAction private constructor(val customActionImplementationName : String): RuleStateAction() {
    }
    private class ClassificationRuleActionState  private constructor(val classificationExpression : RegulationExpression):  RuleStateAction() {
    }
}
Unfortunately I have no idea how this classes will be used, I just have a diagram which need to implement. I think that it is bad idea to create instances with intensive state manipulations as shown above, but how to assure one-to-one instances relationship? How to implement properly UML composition relationship in Kotlin?
 
     
    