SimpleAttribute PythonCode {}
SimpleAttribute String {}
SimpleAttribute Natural {}

Class BaseDEVSBlock {
    name: String
}

Class AtomicDEVSBlock: BaseDEVSBlock {
    timeAdvance: PythonCode
    outputFnc: PythonCode
    intTransition: PythonCode
    extTransition: PythonCode
    initialState: PythonCode
}

Class CoupledDEVSBlock: BaseDEVSBlock {}

Class DEVSInstance {
    name: String
    type: String
    parameters: 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) {}
