ActionLanguage ActionCode {}
SimpleAttribute String {}

Class BaseDEVSBlock {
    name: String
}

Class AtomicDEVSBlock: BaseDEVSBlock {
    timeAdvance: ActionCode
    outputFnc: ActionCode
    intTransition: ActionCode
    extTransition: ActionCode
    confTransition: ActionCode
    initialState: ActionCode
}

Class CoupledDEVSBlock: BaseDEVSBlock {}

Class DEVSInstance {
    name: String
    type: String
}

Association SubModel(CoupledDEVSBlock, DEVSInstance) {}

Class Port {
    name: String
}

Class InputPort: Port {}
Class OutputPort: Port {}

Association DEVSBlockToPort(BaseDEVSBlock, Port) {}
Association DEVSInstanceToPort(DEVSInstance, Port) {}
Association Channel (Port, Port) {}
